StringBuffer是一个字符串缓冲区,是一个容器,而且长度可变,可以直接操作多个数据类型,

最终会通过toString()方法变成字符串。

容器的功能有:

1、存储

public StringBuffer   append():将指定数据添加到已有数据的结尾处。

  1. public StringBuffer insert(int offset,char c): 将字符c插入到offset位置。

1)

  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo1 {
  3. public static void main(String[] args) {
  4. StringBuffer sb =new StringBuffer();
  5. StringBuffer sb1=sb.append(88);
  6. sop(sb.toString());
  7. sop(sb1.toString());
  8. sop("sb==sb1:  "+ (sb==sb1));
  9. sop("sb.equals(sb1): "+(sb.equals(sb1)));
  10. }
  11. public static void sop(String str){
  12. System.out.println(str);
  13. }
  14. }

结果为:

88
88
sb==sb1:  true
sb.equals(sb1): true

2)

  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo1 {
  3. public static void main(String[] args) {
  4. StringBuffer sb =new StringBuffer();
  5. StringBuffer sb1=sb.append(88).append(true).append("big");
  6. sop(sb.toString());
  7. sop(sb1.toString());
  8. }
  9. public static void sop(String str){
  10. System.out.println(str);
  11. }
  12. }

结果为:

88truebig
88truebig

3)指定位置插入

  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo1 {
  3. public static void main(String[] args) {
  4. StringBuffer sb =new StringBuffer();
  5. sb.append(88).append(true).append("big");
  6. sb.insert(1,"qqhaoma");
  7. sop(sb.toString());
  8. }
  9. public static void sop(String str){
  10. System.out.println(str);
  11. }
  12. }

输出结果为:

8qqhaoma8truebig

2、删除

  1. public StringBuffer delete(int start,int end)
  1. 删除 start位置开始,end位置结束的子字符串,
  1. 注意删除的内容包含头(start),不包含尾(end)。
  1. public StringBuffer deleteCharAt(int index)
  1. 删除指定位置的字符。
  1.  
  1. 1
  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo2 {
  3. public static void main(String[] args) {
  4. StringBuffer sb= new StringBuffer("abcde");
  5. sb.delete(1,3);
  6. System.out.println(sb.toString());
  7. }
  8. }
  1. 结果为:
  1. ade
  1.  

2)清空缓存区

  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo2 {
  3. public static void main(String[] args) {
  4. StringBuffer sb= new StringBuffer("abcde");
  5. //清空缓冲区。
  6. sb.delete(0,sb.length());
  7. System.out.println(sb.toString());
  8. }
  9. }

3、获取

  1. public char charAt(int index)
  1. public int indexOf(String str)
  1. public int indexOf(String str, int fromIndex)
  1. public int length()
  1. public String substring(int startint end)

4、修改

  1. public StringBuffer replace(int start,int end,String str)
  1. start开始,end结尾的子字符串替换成str,包含开头,不包含结尾。
  1.  
  1. public void setCharAt(int index,char ch)
  1. 设置index位置的字符为ch
  1.  
  1. 1
  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo3 {
  3. public static void main(String[] args) {
  4. StringBuffer sb= new StringBuffer("abcde");
  5. sb.replace(1, 4, "java");
  6. System.out.println(sb.toString());
  7. }
  8. }

结果为:

ajavae

2)

  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo3 {
  3. public static void main(String[] args) {
  4. StringBuffer sb= new StringBuffer("abcde");
  5. sb.replace(1, 4, "java");
  6. sb.setCharAt(0,'b');
  7. System.out.println(sb.toString());
  8. }
  9. }

结果为:

bjavae

5、反转

  1. public StringBuffer reverse()

将字符串反转

6、

  1. public void getChars(int srcBegin, int srcEnd,char[] dst, int dstBegin)

将缓冲区中指定数据存储到指定字符数组中。包含头,不包含尾。

  1. package j2se.StringBuffer.one;
  2. public class TestStringBufferDemo4 {
  3. public static void main(String[] args) {
  4. StringBuffer st=new StringBuffer("abcdefg");
  5. char[] ch =new char[8];
  6. st.getChars(0,6,ch, 1);
  7. for(int i=0;i<8;i++){
  8. System.out.println("ch["+i+"]= " +ch[i]);
  9. }
  10. }
  11. }

结果为:

数据库 CURD    create  update read delete)

 JDK1.5以后出现StringBuilder。

StringBuilder类完全兼容StringBuffer类的API,也就是说它是StringBuffer类的翻版。与其不同点是:

StringBuilder类没有线程锁即线程不同步,StringBuffer类是线程同步的。

多线程用StringBuffer类或者用StringBuilder类再自己加锁,单线程用StringBuilder类。

以后开发建议用StringBuilder类。

JDK升级三因素:

1、提高效率

2、简化书写

3、提高安全性

StringBuffer类、StringBuilder类详解的更多相关文章

  1. 【转】UML类图与类的关系详解

    UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...

  2. String类的构造方法详解

    package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...

  3. [转]c++类的构造函数详解

    c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初 ...

  4. StringBuffer&StringBuilder区别详解

    序言 StringBuffer与StringBuilder是java.lang包下被大家熟知的两个类.其异同为:一.长度都是可扩充的:二.StringBuffer是线程安全的,StringBuilde ...

  5. Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  6. UML类图与类的关系详解

    摘自:http://www.uml.org.cn/oobject/201104212.asp UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类 ...

  7. phpcms加载系统类与加载应用类之区别详解

    <?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms ...

  8. c++类的构造函数详解

    c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public:         // 类Counter的构造函数         // 特点:以类名作为函数名,无返回类 ...

  9. String、StringBuffer和StringBuilder类的区别

    Java提供了String.StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法. 它们的相同点是都用来封装字符串:都实现了CharSequence接 ...

  10. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

随机推荐

  1. LR_问题_平均响应时间解释,summary与analysis不一致----Summary Report中的时间说明

    Summary是按整个场景的时间来做平均的,最大最小值,也是从整个场景中取出来的. (1)       平均响应时间:事物全部响应时间做平均计算 (2)       90%响应时间:将事物全部响应时间 ...

  2. 软件构造 Lab1

    大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSqu ...

  3. id 和 class的区别

    id 选择器 ID 只能被指定单个元素使用,无法多个元素使用.像你的身份证号,是唯一的,id 选择器以 “#” 来定义.id选择器的优先级高于class选择器的优先级的 # userid { text ...

  4. Java中数组的创建

    Java中数组的使用 1.普通数组变量的定义: //数组 //1.数组是Java中很重要的一部分,今天对数组进行了大致的了解,Java中的数组和C中数组还是有一定的区别的 //以下是总结的几种方法 p ...

  5. 012-PHP创建一个多维数组

    <?php $Cities = array( //二维数组array() "华北地区"=>array( "北京市", "天津市" ...

  6. spring core:@AliasFor的派生性

    spring对Annotation的派生性应用可谓炉火纯青,在spring core:@Component的派生性讲过支持层次上派生性,而属性上派生的需求则借助了@AliasFor,它是从spring ...

  7. [题解] LuoguP4091 [HEOI2016/TJOI2016]求和

    传送门 首先我们来看一下怎么求\(S(m,n)\). 注意到第二类斯特林数的组合意义就是将\(m\)个不同的物品放到\(n\)个没有区别的盒子里,不允许有空盒子的方案数. 那么将\(m\)个不同的物品 ...

  8. 实验吧-web-Guess Next Session(session简介)

    看代码: <?php session_start(); if (isset ($_GET['password'])) { if ($_GET['password'] == $_SESSION[' ...

  9. 从0开始自己配置一个vps虚拟服务器(1)

    我前几年买的虚拟机都被我荒废了,我已经配置过很多遍了,但是从来没有真的用过.因为我前几个月之前又新买了一个便宜的服务,准备写新的东西.供应商pacificrack,真的很烂,一直断,控制面板还打不开, ...

  10. ROS大型工程学习(一) 必须了解的基本文件

    一.Cmake文件 阅读工程,首先点开CMakeLists 文件,会定义一些库和可执行文件.首先看可执行文件,rosrun的就是这个节点navigator add_executable(navigat ...