String类之间的区别
229字小于1分钟
2025-09-23
String、StringBuffer与StringBuilder之间的区别
细节
String
当通过 String s = "a"; 这种直接赋值的方式创建字符串时,Java 会将字符串 "a" 存入字符串常量池
若后续有其他变量也以同样方式赋值为 "a"(如 String s2 = "a";),Java 会直接从常量池中复用已存在的 "a" 对象,而不会创建新对象。
因此,这些变量会指向常量池中同一个 "a" 对象的地址,即 s == s2 的结果为 true(== 比较的是地址)
StringBuffer
StringBuffer
与 String
不同,即使多个 StringBuffer
对象的值相同,它们也会指向不同的内存地址,因为 StringBuffer
是通过 new
关键字创建的对象,且不会像 String
那样有常量池复用机制。