当我调用
test.intern()此实习生方法将做什么时?
它将把
"dog"字符串放入字符串池中(除非已经存在)。但它不一定会放 对象 是
test指在游泳池。这就是为什么你通常这样做
test = test.intern();
请注意,如果您
"dog"的代码中有文字,那么
"dog"字符串池中已经有一个,因此
test.intern()将返回该对象。
也许您的实验使您感到困惑,实际上,您想到的是以下实验:
String s1 = "dog"; // "dog" object from string poolString s2 = new String("dog"); // new "dog" object on heapSystem.out.println(s1 == s2); // falses2 = s2.intern(); // intern() returns the object from string poolSystem.out.println(s1 == s2); // true


