0

以下のコードの出力について説明が必要です。

class Stats
{
    static int a = 10;
    int b = 20;
    void printMe()
    {
        System.out.println(a+b);
    }
}

public class Static
{
    public static void main(String args[])
    {
        Stats s1 = new Stats();
        Stats s2 = new Stats();
        s1.b = 30;
        s1.printMe();
        s1.a = 20;
        s2.printMe();
    }
}

出力: 40 40

参照「s1」を介して20に変更される静的変数「a」のコピーが1つだけあるはずなので、40と50になると予想しました。

4

1 に答える 1

4

astatic は「クラス変数」とも呼ばれ、 の値は のaすべてのインスタンスで等しくなりますStats

したがって、最初の呼び出しでは: ais は 10 にb等しく、s1 の is は 30 に等しいため、a+bis は 40 に等しくなります。

2 番目の呼び出しでは abis は 20 に等しく、s2 の is は 20 に等しいため、a+bis は 40 に等しくなります。

于 2013-04-27T00:37:52.377 に答える