数据没有显示在 system.out.println 语句中
带括号的是工作和等于方法
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));
输出:人人生而平等:假
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();
输出:人人生而平等:假
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();
输出:假
为什么“人人生而平等:”没有打印
最佳答案
您使用的运算符有不同的优先级。 ==
运算符的优先级低于 +
运算符(就像 +
的优先级低于 *
在数学中),所以你的表达
"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)
.
运算符具有非常高的优先级,高于 +
的优先级,因此在这种情况下不需要括号。
关于java - 为什么在使用 boolean 语句时内容不在 system.out.println 语句中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57669097/