String与StringBuffer区别

StringBuffer类和String类一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,所以在内存使用上,StringBuffer类要优于String类。也即是对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题

例如:

String a="asdf";
a=a.substring(1)
对字符串改变后要重新赋值
但StringBuffer字符串对其改变后不用重新赋值;

StringBuffer类中存在很多和String类一样的方法,这些方法在功能上是完全一样的。
StringBuffer类中也有一些独特的方法,用于帮助我们更方便的实现某些功能。

StringBuffer类的对象的初始化

通常情况下使用构造方法对其进行初始化:

  1. StringBuffer stringBuffer = new StringBuffer();

这样初始化出的StringBuffer对象是一个空的对象。
如果需要创建带有内容的StringBuffer对象,则可以使用:

  1. StringBuffer stringBuffer = new StringBuffer("Hello World!");

这样初始化出的StringBuffer对象的内容就是字符串"Hello World!"

StringBuffer对象和String对象互转

注意,StringBufferString属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:

  1. StringBuffer s = "abc"; //赋值类型不匹配
  2. StringBuffer s = (StringBuffer)"abc"; //不存在继承关系,无法进行强转

正确的对象之间互转代码如下:

  1. String string1 = "Hello World!";
  2. StringBuffer stringBuffer = new StringBuffer(string1); //String转换为StringBuffer
  3. String string2 = stringBuffer.toString(); //StringBuffer转换为String<br />

若输入赋值,先给string字符串赋值后再转换为StringBuffer。
Scanner cin =new Scanner(System.in);
String data=cin.nextLine();
StringBuffer a=new StringBuffer(data);
额,这样还费劲转化为StringBuffer干啥,直接用string不就行了嘛,,,
是这样,但有时为了StringBuffer类的独有函数不得不转化,StringBuffer类不能使用String类的方法反之亦然。

append()方法

append()方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接,请看示例:

  1. StringBuffer stringBuffer = new StringBuffer("Hello");
  2. stringBuffer.append("World!");
  3. System.out.println(stringBuffer);

执行以上代码,结果为:

  1. HelloWorld!

    reverse()方法

    reverse()方法将把当前字符序列反转后返回,请看示例:

  2. StringBuffer stringBuffer = new StringBuffer("abc");

  3. System.out.println(stringBuffer.reverse());

执行以上代码,结果为:

  1. cba

StringBuffer类(字符缓冲器)
StringBUffer sb=new StringBUffer(“少时诵诗书”);
Sb.insert(1,“试试”)在第一个字符后插入”试试” 这里也可以用左开右闭的思想
Sb.delete(1,5) 删除字符1到5 (1,5] 左开右闭思想
Sb.deleteCharAt(2) 删除第三个字符 左开右闭思想
Sb.setCharAt(1,’p’) 指定位置修改字符 左开右闭思想
Sb.replace(1,3,”哦哦”) 第二个字符到第三个字符 修改成”哦哦” 左开右闭思想

构造方法

public StringBuffer(): 无参构造方法
public StringBuffer(int capacity): 指定容量的字符串缓冲区对象
public StringBuffer(String str): 指定字符串内容的字符串缓冲区对象
1
2
3
StringBuffer的获取长度及容量方法

public int capacity():返回当前容量。 理论值
public int length():返回长度(字符数)。 实际值

StringBuffer的添加功能

public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
public StringBuffer append(String str) 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

StringBuffer的删除功能

public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身

StringBuffer的替换和反转功能

public StringBuffer replace(int start,int end,String str): 从start开始到end用str替换
public StringBuffer reverse(): 字符串反转
void setCharAt(int index,char ch)修改index处的字符序列

StringBuffer的截取功能及注意事项

public String substring(int start): 从指定位置截取到末尾

public String substring(int start,int end): 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
原文链接:https://blog.csdn.net/baolingye/article/details/89490762