在java中有constantPool常量池,常量池里存放的是类,方法,接口的等常量,而对于存放字符串常量通常存放的符号链接Symbol 或者真实的String的对象的引用. 我们来看一段简单的代码和反编译字节码 public class test { public static void main(String[] args) { String test = "test"; } } Constant pool: #1 = Class #2 // test #2 = Utf8 test
String 对象的不可变性 java8中的String只有2个属性value和hash,相关代码如下: /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0 value是字符串的字符数组,hash是字符串的hash值缓存 public final