如果下面的“if”stmt评估为TRUE,那么Output = 20的值或者10 ..
有人可以解释增量运算符的工作原理吗?
public class Test {
public static void main(String[] args) throws IOException {
int Output = 10;
boolean b1 = true;
if ((b1 == true ) && ((Output += 10) == 20)){
System.out.println("We are Equal = " + Output);
}
else{
System.out.println("Not Equal = " + Output);
}
}
}
答案 0 :(得分:5)
+=
运营商的工作方式与众不同;它是&&
运算符。
&&
运算符短路。如果b1
为false,则b1 && (anything else)
无法为真,因此会停止评估。因此,如果Output += 10
不为真,则不会评估b1
,因此Output
将为10。
如果b1
为真,则必须继续查看条件的其余部分是否为真。这样做时,它必须评估Output += 10
,从而将Output
的值增加10,使Output
的值为20。
答案 1 :(得分:1)
整数值10
被添加到当前值Output
。在此之后,使用==
运算符比较输出值,该运算符仅对布尔运算。
在这段特殊代码中,由于b1
为真,并且在其值增加10后输出为20,因此if
块的条件为真,因此{{1}将被丢弃,else
块内的任何代码都将被执行。
答案 2 :(得分:-1)
1)+ =
表示“预增量”。因此,使用Output=10
if块将按以下步骤进行
if ((b1 == true ) && ((Output = Output + 10) == 20)){
这里,一旦增量完成,输出的值将与20进行比较。所以,在第一次 执行if块..它将按以下步骤进行..
if ((b1 == true ) && ((20) == 20)){
2)=+
意思是“后增量”。因此,输出的值将与增量前的20进行比较。因此,在第一次执行if块期间..它将继续如下..
if ((b1 == true ) && ((10) == 20)){
希望这个解释有助于: - )