关于if语句java的语句评估

时间:2013-10-04 00:50:14

标签: java

如果下面的“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);
        }
    }
}

3 个答案:

答案 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)){

希望这个解释有助于: - )