JDK提供了三个常用的字符串类,初来乍到一脸懵逼应该怎么使用呢?
三个类均是final修饰不可继承扩展;
String类实例化对象后,每次对对象的操作都会产生一个新对象,占用内存空间。
public class MyTest {
public static void main(String[] args) {
String s1 = "Talk is cheap,";
System.out.println(s1.hashCode()); // 输出hashcode 1174080159
s1 = s1 + "Show me the bug";
System.out.println(s1.hashCode()); // 输出hashcode 502572065
}
}
StringBuffer和StringBuilder都是在源对象上操作,但不同的是StringBuffer是线程安全的,StringBuffer类源码中每个方法都是同步方法加了synchronized关键字;而StringBuilder类的方法没有加synchronized关键字所以多线程环境下会有线程安全问题。
所以根据场景选择
字符串不经常修改时可以使用String;经长需要修改时考虑效率则优先使用StringBuilder;考虑多线程环境下保证线程安全使用StringBuffer。
String、StringBuffer、StringBuilder 啥 啥 啥
原文:https://www.cnblogs.com/heyuhao/p/14865146.html