java - 为什么在使用 boolean 语句时内容不在 system.out.println 语句中打印

标签 java string system.out

数据没有显示在 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/

相关文章:

java - 尝试使用我制作的 toString 方法打印出一个对象,得到我认为是 hashCode 的东西?如何输出字符串?

java - 如果 session 处于 Activity 状态,如何使该应用程序在浏览器重新启动后不要求我重新登录

java - sudo 登录后使用 Java JSch 程序执行多个 bash 命令

java - JSP属性查找错误

python - 从python中的列表中获取第一个非空字符串

java - 如何进行输入而不是在字段中输入数字

java - 如何从 URL 中提取 jar 文件

objective-c - 拆分一个 NSString 以访问一个特定的片段

ios - Objective-C iOS 根据定义解析字符串

java - Java中System.out.println()和return的区别