System.out.print 语句的意外输出

Unexpected Output of System.out.print statement

当在程序中使用 String 的 intern 方法时,它给出了一些意外的输出,我无法理解为什么会给出这样的输出

public class Test {

    public static void main(String[] args)
    {

        String str1 = "patty";
        String str2 = new String("patty");

        System.out.println("1   ->  "+ str1 == str2);

        String str3 = str2.intern();

        System.out.println("2   ->  "+ str1 == str3);
    }
}

在输出中显示

false
false

但预期输出是

1   ->  false
2   ->  true

任何人都可以帮助我理解这个问题

即使 str1str3 引用相同的 String 实例,您也没有比较这些引用。

System.out.println("2   ->  "+ str1 == str3);

"2 -> "+ str1str3 进行比较。

尝试:

System.out.println("2   ->  "+ (str1 == str3));