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
任何人都可以帮助我理解这个问题
即使 str1
和 str3
引用相同的 String
实例,您也没有比较这些引用。
System.out.println("2 -> "+ str1 == str3);
将 "2 -> "+ str1
与 str3
进行比较。
尝试:
System.out.println("2 -> "+ (str1 == str3));
当在程序中使用 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
任何人都可以帮助我理解这个问题
即使 str1
和 str3
引用相同的 String
实例,您也没有比较这些引用。
System.out.println("2 -> "+ str1 == str3);
将 "2 -> "+ str1
与 str3
进行比较。
尝试:
System.out.println("2 -> "+ (str1 == str3));