String这种多次赋值操作或者拼接字符串操作,会在内存中不停的开辟空间,容易造成内存空间的浪费。
而StringBuffer和StringBuilder当字符串不停修改时,一致使用同一个内存空间。
StringBuffer在多线程中线程安全。
StringBuilder在多线程中存在线程安全问题,但是在单线程中StringBuilder效率更高。
两者区别在于str1的字符串在常量池中,图一的str2新开辟一块内存空间,所以str1==str2为false
类似的:
经典题如下: