我正在阅读Java tutorials从开始,我有一个关于字段或变量的关键字static
的问题。正如Java
所述here:static关键字如何在Java中工作?
Class Variables (Static Fields)
甲类变量是与静态修饰符声明任何字段;这告诉编译器,这个变量只有一个副本存在,而不管该类实例化了多少次。定义特定类型自行车的齿轮数量的字段可以被标记为静态的,因为概念上相同数量的齿轮将适用于所有情况。
就这样,我想,如果你有一个对象(在这种情况下,类Bicycle
的实例)和它内部的一个领域,其static
然后,独立的,如果你refearing到bicycle1
或bicycle2
,它的静态字段将具有相同的值。我错了,还是理解得好?
我的意思是,如果我有:
Bicycle bicycle1 = new Bicycle();
Bicycle bicycle2 = new Bicycle();
,并在课堂上Bicycle
我有一个static
领域,如:
class Bicycle{
static int gears;
//Methods to set and get gears
}
而在bicycle1
我齿轮的值设置为七:
bicycle1.setGears(7);
那么如果我尝试获取齿轮的值我n bicycle2
我应该获得与我在bicycle1
上设置的值相同的值,对吗?
System.out.println(bicycle2.getGears()); //7
好了,这里是我的疑惑因为Java
在这上面我把帖称:
这告诉编译器恰好有一个存在
这个变量的副本
此副本存储在哪里?对象如何访问该副本?这个副本何时创建?
[JVM如何手的可能重复(静态变量?)(http://stackoverflow.com/questions/27229714/how-jvm-handles-static-variable) –
顺便说一句,你通常不应该从实例调用静态方法/属性。我不知道为什么编译器允许它 – Dici
@Dici如果我使用它们,请问你能解释一下它可能产生的问题吗? –