繁体   English   中英

System.out.println中字符串的相等性检查

[英]equality check for Strings in System.out.println

我正在System.out.println直接检查==运算符以比较字符串引用。我怀疑是'字符串常量池'两个字符串将引用池中的相同实例,输出为'true'然后为什么第一个输出是'假'。

以下是示例代码:

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:"+ s1s2 ,因此返回false。 (s1==s2)为真,因为它们都从String池中获取它们引用的实例。

如果你看到Java文档,那么+得到更高的优先级然后==所以首先字符串"s1==s2 is:"+ s1将被连接然后它将被比较为s2 ,这对于第一种情况是假的,因为第一个字符串由连接将在堆中生成。

System.out.println(“s1 == s2 is:”+ s1 == s2); - >它连接“s1 == s2 is:”+ s1并检查是否相等,因为你得到了错误。

你比较"s1==s2 is:" + "abc"abc在第一种情况下 - > false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM