欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java之String、StringBuffer、StringBulider辨识

发布时间:2025/4/16 java 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java之String、StringBuffer、StringBulider辨识 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、总引:

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

从这段话中,可以读出两点:

1)在修改自身对象时,String是不可变的,StringBuffer和StringBuilder是可变的;

2)同是可变下,StringBuffer是线程安全的(适用多线程),而StringBuilder则有速度优势(适用单线程)。


2、String和StringBuffer可变和不可变

public static void main(String args[]){String str = "hello";StringBuffer strBuffer = new StringBuffer();strBuffer.append(" world");System.out.println(str.getClass() + "@" + str.hashCode());System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode());str = "jason";strBuffer.append(" and jason");System.out.println(str.getClass() + "@" + str.hashCode());System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode()); }
结果:String的地址已改变,对象已经改变为另一个;StringBuffer地址不变,还是同样的对象。

class java.lang.String@99162322 class java.lang.StringBuffer@131204848 class java.lang.String@100897019 class java.lang.StringBuffer@131204848

3、适用场景

1)如果要操作少量的数据用 String; 
2)多线程操作字符串缓冲区下操作大量数据 StringBuffer; 
3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

总结

以上是生活随笔为你收集整理的Java之String、StringBuffer、StringBulider辨识的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。