Java中的静态变量问题

时间:2013-04-27 00:32:15

标签: java variables static single-instance

我需要解释以下代码的输出:

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岁。

1 个答案:

答案 0 :(得分:4)

a是静态的,也称为“类变量”, 在a

的所有实例中,Stats的值将相等

所以在第一个电话中: 对于s1,a等于10,b等于30, 所以a+b等于40,

并在第二个电话中: 对于s2,a等于20,b等于20, 所以a+b等于40