String与StringBuffer区别
StringBuffer
类和String
类一样,也用来代表字符串,只是由于StringBuffer
的内部实现方式和String
不同,StringBuffer
在进行字符串处理时,不生成新的对象,所以在内存使用上,StringBuffer
类要优于String
类。也即是对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题
例如:
String a="asdf";
a=a.substring(1)
对字符串改变后要重新赋值
但StringBuffer字符串对其改变后不用重新赋值;
StringBuffer
类中存在很多和String
类一样的方法,这些方法在功能上是完全一样的。StringBuffer
类中也有一些独特的方法,用于帮助我们更方便的实现某些功能。
StringBuffer类的对象的初始化
通常情况下使用构造方法对其进行初始化:
StringBuffer stringBuffer = new StringBuffer();
这样初始化出的StringBuffer
对象是一个空的对象。
如果需要创建带有内容的StringBuffer
对象,则可以使用:
StringBuffer stringBuffer = new StringBuffer("Hello World!");
这样初始化出的StringBuffer
对象的内容就是字符串"Hello World!"
。
StringBuffer对象和String对象互转
注意,StringBuffer
和String
属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:
StringBuffer s = "abc"; //赋值类型不匹配
StringBuffer s = (StringBuffer)"abc"; //不存在继承关系,无法进行强转
正确的对象之间互转代码如下:
String string1 = "Hello World!";
StringBuffer stringBuffer = new StringBuffer(string1); //String转换为StringBuffer
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
对象的末尾,类似于字符串的连接,请看示例:
StringBuffer stringBuffer = new StringBuffer("Hello");
stringBuffer.append("World!");
System.out.println(stringBuffer);
执行以上代码,结果为:
-
reverse()方法
reverse()
方法将把当前字符序列反转后返回,请看示例: StringBuffer stringBuffer = new StringBuffer("abc");
System.out.println(stringBuffer.reverse());
执行以上代码,结果为:
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