我需要对以下代码的输出进行解释:
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。
最佳答案
a
是静态的,也称为“类变量”,
a
的值在 Stats
的所有实例中都相等,
所以在第一次调用中:
对于 s1,a
等于 10,b
等于 30,
所以 a+b
等于 40,
在第二次调用中:
对于 s2,a
等于 20,b
等于 20,
所以a+b
等于40
关于java - Java 中静态变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16247078/