JAVA初学,这是怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:11:45
int a=3;
int b=4;
则表达式 ++a==b的值为什麽是TURE?
还有一题:
1. boolean passingScore = false && grade == 70;
2. boolean passingScore = false & grade == 70;
表达式grade == 70 在什么地方被计算_____
随便说明为什麽.O(∩_∩)O~

第一题:
==运算符是从左到右开始计算.但考虑运算符优先级,也还是要先算++a的.
先计算++a的值.(简单解释++a,++a表示a的值等于:a+1)
再判断a+1是不是等于b.
因为定义ab都为int类型,a=3,b=4
所以a+1,为:3+1,于是值为4
接着判断,由于4等于4的,所以返回true(真).

**************************************

第二题:
&&和&的运算符是从左到右开始计算.&&有短路规则.
如果出现&&的时候,若表达式中只要有一个值是false(假),那么这个表达式返回的值就是假,由于在:
1. boolean passingScore = false && grade == 70;
这题中, && 左边passingScore已经被定义为false(假),那么,后边的表达式是真是假都不用管了,所以这表达式注定返回的结果是false(假)了,于是直接中断表达式,返回结果为false(假),所以右边的这个grade == 70不会被计算到.

总结,运算符&&是从左到右开始计算,左边若是假,直接中断,右边不会被计算到,返回结果为false(假).

----------------------

2. boolean passingScore = false & grade == 70;
这题中,有&运算符,而&不像&&那样有短路规则.

**************************************

所以表达式grade == 70 在什么地方被计算的答案为:
在这个:
2. boolean passingScore = false & grade == 70;
中被计算.

++a的意思是先吧a加1再计算;所以表示式++a==b的值是true;
boolean passingScore = false && grade == 70;