
public Class Example{ public static void main(String[] args) { String s = new String("1"); s.intern(); String s2 = "1"; System.out.println(s == s2);
String s3 = new String("1") + new String("1"); s3.intern(); String s4 = "11"; System.out.println(s3 == s4); } }
这段代码的我机器上输出结果是 false false.但我看到原文 https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html 的结果是 false true.所以到底结果应该是什么?
重新排版修改:
public class Example{ public static void main(String[] args) { String s = new String("1"); s.intern(); String s2 = "1"; System.out.println(s == s2); String s3 = new String("1") + new String("1"); s3.intern(); String s4 = "11"; System.out.println(s3 == s4); } } 代码1:
public class Main { public static void main(String[] args) { String s = new String("1"); s.intern(); String s2 = "1"; System.out.println(s == s2); String s3 = new String("1") + new String("1"); s3.intern(); String s4 = "11"; System.out.println(s3 == s4); } } //false false 代码2:
public class Main { public static void main(String[] args) { String s = new String("1"); s.intern(); String s2 = "1"; System.out.println(s == s2); String s3 = new String("呼喊哈虎") + new String("呼喊护花"); s3.intern(); String s4 = "呼喊哈虎呼喊护花"; System.out.println(s3 == s4); } } //false true 1 itart Aug 28, 2024 s = s.intern(); |
2 lixiaolin123 OP @newte88 感谢回答。 我找到原因了。 一开始得到结果 false false 是因为我用的是公共在线 JVM https://www.bejson.com/runcode/java/ 第 2 条附言,比较一下代码 1 和代码 2 ,你应该也就知道原因了。 |