String,StringBuilder和StringBuffer区别
三者区别
1.运行速度
StringBuilder > StringBuffer > String
2.线程安全
StringBuilder是线程不安全的,而StringBuffer是线程安全的
3.初始化
String test = null;/String test = "123";
StringBuffer test = new StringBuffer();/StringBuffer test = new StringBuffer("123");
原因
String的值是不可变的,导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以出现了StringBuilder和StringBuffer。
String:不可变字符
StringBuffer:可变字符,效率低,线程安全
StringBuilder(JDK1.5):可变字符,效率高,线程不安全
使用选择
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况