-2

このJavaコードから出力がどのように機能するかを理解したいと思います.親切に助けてください! このコードは、Head First Java という本から引用しました。コードは次のとおりです。

public class EchoTestDrive {

    public static void main(String[] args) {
        Echo e1 = new Echo();
        Echo e2 = new Echo(); // the correct answer
        //or
        Echo e2 = e1; // is the bonus answer!
        int x = 0;
        while (x < 4) {
            e1.hello();
            e1.count = e1.count + 1;
            if (x == 3) {
                e2.count = e2.count + 1;
            }
            if (x > 0) {
                e2.count = e2.count + e1.count;
            }
            x = x + 1;
        }
        System.out.println(e2.count);
    }
}

class Echo {

    int count = 0;

    void hello() {
        System.out.println("helloooo... ");
    }
}

これは出力です:

  %java EchoTestDrive
   helloooo...
   helloooo...
   helloooo...
   helloooo...
   10
4

3 に答える 3

2

この例は、ソースコードプールから空白を埋めるようなものです。

あなたはそれをうまく完了しました、そしてあなたはなぜ違いが以下のために起こるのか疑問に思うかもしれません

Bonus Answer! 
24
correct Answer!
10

正しい場合は

Echo e2 = new Echo(); // the correct answer 

の個別のインスタンスを作成してEchoいるので、独自のインスタンスがあり、このカウントにアクセスしているcountと言うたびに。e2.count

ボーナスアンサーの場合

Echo e2 = e1;

同じオブジェクトを指す2つの参照があるので、アクセスe2.countするcountときはe1e2

于 2013-01-04T11:38:38.763 に答える