Java的String类和StringBuffer类的区别

小编 172

Java的String类和StringBuffer类的区别:1.对象的可变性不同;2.数据连接方法不同;3.操作字符串时的适用性不同;4.字符串的比较方法不同。对象的可变性不同,String类对象为不可变对象,而StringBuffer类对象可通过append()方法来修改。

1.对象的可变性不同

String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象;而StringBuffer类对象为可修改对象,可以通过append()方法来修改值。

2.数据连接方法不同

在String类中使用“+”作为数据的连接操作;而在StringBuffer类中使用append()方法(方法定义:public StringBuffer append(数据类型变量))进行数据连接。

3.操作字符串时的适用性不同

String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度都可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类。

4.字符串的比较方法不同

String类提供了一些方法,用来进行字符串的比较。这个类实现了Object父类的equals()方法,用来比较两种字符串的值是否相等。同时还增加了equalsIgnoreCase()方法可以忽略两个字符串大小写的区别。

但是StringBuffer类并没有实现Objcet类的Equals方法,所以不能用这个方法来比较两个StringBuffer类的字符串是否相等。除了用equalse方法来比较两个字符串外,还可以用==来比较字符串。与equalse方法不同的是,==不是比较两个字符串的值是否相等,而是比较几个字符串的引用是否指向同一个实例。

延伸阅读

Java的StringBuilder类是干什么的

StringBuilder又称为可变字符序列,它是一个类似于String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容,其作用是提高字符串的操作效率。

根据StringBuilder的API文档,常用构造方法有2个:

  • public StringBuilder()`:构造一个空的StringBuilder容器。
  • public StringBuilder(String str)`:构造一个StringBuilder容器,并将字符串添加进去。

StringBuilder类主要适用于两种情况:一是,希望代码在设计时对字符串进行未知数量的更改,例如:使用循环来连接包含用户输入的随机数量的字符串时;二是希望代码对字符串进行大量更改时。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部