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

时间:2014-01-15 20:11:08

标签: 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();  
        }
    }
}

它如何输出: “邦邦巴邦 丁丁大丁 bang bang ba-bang“

而不是:“砰砰砰砰砰砰 丁丁大丁“

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

2 个答案:

答案 0 :(得分:6)

删除此行中的分号,该分号作为if块的正文。

if (d.snare == true);{

将其更改为

if (d.snare == true){

此外,d.snare已经是boolean,因此您可以将条件表达式简化为:

if (d.snare){

答案 1 :(得分:1)

这是爆炸

if (d.snare == true);

删除;