我需要解释以下代码的输出:
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岁。
答案 0 :(得分:4)
a
是静态的,也称为“类变量”,
在a
,
Stats
的值将相等
所以在第一个电话中:
对于s1,a
等于10,b
等于30,
所以a+b
等于40,
并在第二个电话中:
对于s2,a
等于20,b
等于20,
所以a+b
等于40