在对象上声明boolean,不会更改其值

use*_*851 -1 java instance-variables

我只是弄清楚实例变量是如何工作的,但它让我有些奇怪.

public class DrumKit {
    boolean topHat = true;
    boolean snare = true;

    void playTopHat() {
        System.out.println("ding ding da-ding");
    }

    void playSnare(){
        System.out.println("bang bang ba-bang");        
    }
}

public class DrumKitTestDrive {
    public static void main(String [] args) {

        DrumKit d = new DrumKit();
        d.playSnare();
        d.snare = false;
        d.playTopHat();

        if (d.snare == true);{
            d.playSnare();  
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

怎么可能输出:"bang bang ba-bang ding ding ding dang bang bang ba-bang"

而不是:"砰砰砰砰砰砰哒哒哒"

因为我认为圈套只会播放一次,因为我在d.playSnare()之后声明了它; 到d.snare = false;

rge*_*man 6

删除此行中的分号,该分号充当您的if块的主体.

if (d.snare == true);{
Run Code Online (Sandbox Code Playgroud)

将其更改为

if (d.snare == true){
Run Code Online (Sandbox Code Playgroud)

此外,d.snare已经是一个boolean,所以你可以简化条件表达式:

if (d.snare){
Run Code Online (Sandbox Code Playgroud)