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

我预计它是 40 和 50,因为应该只有一个静态变量 'a' 的副本,它通过引用 's1' 修改为 20。

4

1 回答 1

4

a是静态的,也称为“类变量”, 的值a将在 的所有实例中相等Stats

所以在第一次调用中: a等于 10,b对于 s1 等于 30,所以a+b等于 40,

在第二次调用中: a等于 20,b对于 s2 等于 20,所以a+b等于 40

于 2013-04-27T00:37:52.377 回答