我试图理解 String#intern 方法。现在它引起了更大的混乱。
package com;
public class Main {
public static void main(String[] args) {
String s1 = new String("GFG"); // Line-1
String s2 = s1.concat("GFG"); // Line-2
s2.intern(); // Line-3
String s4 = "GFGGFG"; // Line-4
// s2.intern(); // Line -5
System.out.println(s2 == s4);
}
}
上面的代码打印为真。如果我注释第 3 行并取消注释第 5 行,则会打印错误。
对于第 3 行,检查 SCP 并将字符串添加到 SCP。但是在那种情况下 s2 如何等于 s4 呢?
s2 仍在引用堆中指向 SCP 常量的对象。正确的 ?
谁能解释发生了什么?我经历了不同的 SO 问题,但仍然无法理解。
编辑
我只是想了解实习生方法。我知道黑白的区别==,equals后者是首选。
LEATH
万千封印
慕码人2483693
相关分类