String:
String类是不可变类,一旦创建了String对象,包含在这个对象中的字符顺序是不可变的,直到这个对象被销毁。
String a=”adc”
a=”efg”
System.out.println(a)
再次给a赋值时,并不是对原来堆中实例对象进行重新赋值,而是生成一个新的实例对象,并且指向“456”这个字符串,a则指向最新生成的实例对象,之前的实例对象仍然存在,如果没有被再次引用,则会被垃圾回收。
StringBuffer:
StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。(可理解为,)
StringBuffer线程安全,因为方法有加锁,所以是线程安全的。
StringBuilder:
StringBuilder对象和StringBuffer对象相似,但是stringBuilder的方法都不加锁,所以非线程安全。