数据未显示在system.out.println语句中
带括号的它是工作的并且是equals方法
final String s1="all men are created equal:27";
final String s2="all men are created equal:"+s1.length();
System.out.println("all men are created equal:" + (s1==s2));
输出:人人生而平等:false
final String s1="all men are created equal:27";
final String s2="all men are created equal:"+s1.length();
System.out.println("all men are created equal:" + (s1.equalsIgnoreCase(s2)));
System.out.println();
输出:人人生而平等:false
final String s1="all men are created equal:27";
final String s2="all men are created equal:"+s1.length();
System.out.println("all men are created equal:" + s1==s2);
System.out.println();
输出:false
为什么“人人生而平等”不是印刷品?
发布于 2019-08-27 15:01:25
您正在使用的运算符具有不同的优先级。==
运算符的优先级低于+
运算符(就像数学中+
的优先级低于*
一样),所以您的表达式
"all men are created equal:" + s1==s2
以这种方式进行解析:
("all men are created equal:" + s1) == s2
它正在比较"all men are created equal:" + s1
是否等于s2
。这个表达式的结果是一个boolean
。因此,只打印false
。
通过添加括号,您清楚地表明您希望先计算s1==s2
部件,然后计算+
运算符。这就像1+2*3
与(1+2)*3
的不同之处。
另请注意,应该使用equals
而不是==
来比较字符串
"all men are created equal:" + s1.equals(s2)
.
运算符的优先级非常高,高于+
运算符,因此在这种情况下不需要使用方括号。
发布于 2019-08-27 14:58:58
由于java中的运算符优先级,最后一次打印仅显示false。首先,它将“人人生而平等:”与字符串s1连接在一起。然后比较连接的字符串是否等于s2,并打印输出。正如您所看到的,连接的字符串并不等于s2。
发布于 2019-08-27 14:59:25
仅仅因为"all men are created equal:" + s1
和s2
不相等。
通过上面的表达式,您可以检查"all men are created equal:" + s1
和s2
是否相等。因为"all men are created equal:" + s1
和s2
不相等,所以结果将是false
。
如果你想得到预期的行为,你应该用括号把s1==s2
括起来。
"all men are created equal:" + (s1==s2)
https://stackoverflow.com/questions/57669097
复制相似问题