最近学习了Java String Pool,有一些不太明白的地方。
使用赋值运算符时,如果字符串池中尚不存在新字符串,则会在该字符串池中创建一个新字符串。
String a = "foo"; // Creates a new string in the String Pool
String b = "foo"; // Refers to the already existing string in the String Pool
Run Code Online (Sandbox Code Playgroud)
使用 String 构造函数时,我知道无论 String Pool 的状态如何,都会在 String Pool 之外的堆中创建一个新字符串。
String c = new String("foo"); // Creates a new string in the heap
Run Code Online (Sandbox Code Playgroud)
我读的地方,使用构造函数,即使,字符串池中被使用。它将字符串插入到字符串池和堆中。
String d = new String("bar"); // Creates a new string in the String Pool and in the heap
Run Code Online (Sandbox Code Playgroud)
我没有找到关于此的任何进一步信息,但我想知道这是否属实。
如果这确实是真的,那么 - …