Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java System.out.println中字符串的相等性检查_Java - Fatal编程技术网

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

Java System.out.println中字符串的相等性检查,java,Java,我在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 i

我在
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是:”+s1==s2)比较
“s1==s2是:“+s1
s2
,因此返回false
(s1==s2)
为true,因为两者都从字符串池获取引用的实例。

它连接“s1==s2 is:”+s1,并检查是否相等,因为您得到的是false。

您比较
“s1==s2是:”+“abc”
abc
在第一种情况下-->
false
如果您看到
+
具有更高的先例,那么首先字符串
“s1==s2是:”+s1
将被连接,然后将其与
s2
进行比较,这对于第一种情况是错误的,因为通过连接形成的第一个字符串将在堆中生成