Java的String类和StringBuffer类的区别
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类主要适用于两种情况:一是,希望代码在设计时对字符串进行未知数量的更改,例如:使用循环来连接包含用户输入的随机数量的字符串时;二是希望代码对字符串进行大量更改时。