我直接在==
中检查了System.out.println
运算符以比较字符串引用。我的疑问是,根据``字符串常量池'',两个字符串都将引用池中的同一实例,并且输出为'true',然后为什么第一个输出为'false'。
下面是一个示例代码:
String s1 = "abc";
String s2 = "abc";
System.out.println("s1==s2 is:"+ s1==s2);
System.out.println("s1==s2 with brackets is:"+ (s1==s2));
输出为:
false
s1==s2 with brackets is:true
最佳答案
System.out.println("s1==s2 is:"+ s1==s2);
将"s1==s2 is:"+ s1
与s2
进行比较,因此返回false。 (s1==s2)
为true,因为两者都从String池中获取了它们所引用的实例。