我被困在Java练习中,所以我将非常感谢你的帮助。
以下是给定的练习:
Public class FindVariables{
Public static int x=7;
Public int y=3;
}
FindVariables a=new FindVariables ();
FindVariables b= new FindVariables ();
a.x=1;
a.y=5;
b.x=2;
b.y=6;
System.out.println(“a.x=”+a.x);
System.out.println(“a.y=”+a.y);
System.out.println(“b.x=”+b.x);
System.out.println(“b.x=”+b.y);
鉴于输出是:
a.x=2
a.y=5
b.x=2
b.y=6
你能告诉我为什么“a.x”给出输出“2”?
这是如何计算的?
答案 0 :(得分:7)
由于a
为static
,这意味着所有 FindVariables
个实例共享一个 a
。< / p>
因此,当你这样做时:
b.x=2;
然后a.x
也是2
。
答案 1 :(得分:0)
这是因为x是静态变量。每个实例仅对该类没有任何价值。
答案 2 :(得分:0)
变量是静态的。这意味着变量属于类的范围,而不是对象。
答案 3 :(得分:0)
将static
添加到变量时,
您宣布变量归类
所有
而不是任何实例(即使您可以使用引用变量引用它们)。
因此,这意味着在引用它的所有对象中只存在变量a
的单个副本。因此,使用a
还是b
更改值是否正在编辑同一副本。