intern()返回值错误

Author: YPEUCreated Nov 20, 2023Updated Nov 20, 2023

P114页,8.12.1(常量池中已存在字符串) 以下代码的执行结果: 书上:false,true idea(JDK8,JDK21):false,false ` @Test public void internTest(){ String s1 = new String("1"); s1.intern(); String s2 = "1"; System.out.println("s1 == s2 : " + (s1 == s2));

    System.out.println("=========================");

    String s3 = "1" + "1";
    s3.intern();
    String s4 = "11";
    System.out.println("s3 == s4 : " + (s3 == s4));

}

`

修正代码: s3.intern()——>s3 = s3.intern(); ` @Test public void internTest(){ String s1 = new String("1"); s1.intern(); String s2 = "1"; System.out.println("s1 == s2 : " + (s1 == s2));

    System.out.println("=========================");

    String s3 = "1" + "1";
    s3 = s3.intern();
    String s4 = "11";
    System.out.println("s3 == s4 : " + (s3 == s4));

}

` 此时打印结果为:true false

Source: hollischuang/toBeTopJavaer