因此,下周我将面对决赛,我经历了一些旧测试。这个引起了我的注意,因为我似乎无法理解代码。

public class Start {
   boolean zustand = false;

    public static void main (Strings[] args){
        Start obj = new Start();

        for(int i = 0; i <= 3; i++){
            if(obj.getZustand() == true){
                System.out.println(""+i+ " true");
            }
            else{
                System.out.println(""+i+ " false");
            }
        }
    }
    public boolean getZustand(){
        zustand = (zustand == false);
        return zustand;
    }
}


我以为输出是

0 true
1 true
2 true
3 true


但是我在eclipse上尝试了它们,输出是

0 true
1 false
2 true
3 false


谁能给我解释为什么他们都不都是真的?

最佳答案

每次调用zustand函数时,都会更改getZustand变量。

zustand = (zustand == false);


这行代码与zustand = !zustand相同。并注意zustand是一个类成员字段,因此其值在函数调用中保留。

10-07 19:08