为什么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