Jshell没有使用println方法正确打印



为什么Jshell在不使用括号的情况下将r,s视为字符串?

PS C:UserssaikoOneDriveLearningjava> Jshell                                                                                                                                             
|  Welcome to JShell -- Version 11.0.6
|  For an introduction type: /help intro
jshell> int p = 10;  int q =20; int r=5; int s=10;
p ==> 10
q ==> 20
r ==> 5
s ==> 10
jshell> if( (p+q) > (r+s) ) System.out.println( p+q+" is greater than  "+r+s );
30 is greater than  510
jshell> if( (p+q) > (r+s) ) System.out.println( (p+q) +" is greater than  "+ (r+s) );
30 is greater than  15
jshell>

正如评论和Java教程中所说:

除赋值运算符外的所有二进制运算符都是从左到右求值的

在表达式p+q+" is greater than "+r+s中,第一个求值为p+q,结果为int,然后p+q+" is greater than "结果为String,所有后续求值结果也为String。

这就是您获得的原因

30 is greater than  510

最新更新