java中’static int’和’int’之间的区别
在java中我们何时何地使用’static int’,它与’int’有什么不同?
看一下: 了解实例和类成员
当从同一个类蓝图创建许多对象时,它们每个都有自己不同的
instance variables
副本。 (……)有时,您希望拥有所有对象共有的变量。 这是通过静态修改器完成的。 在声明中具有static修饰符的字段称为静态字段或
class variables
。
好。
它在声明成员变量时使用,而static
指的是您是否需要给定类的实例来访问它。
通常, static
用于常量或“辅助”函数或变量。 如果你有太多,如果你最终在一个类中组合静态和非静态变量,它最终会暗示不好的设计(尽管不是所有的时间)。
如果变量是static
,则它的值在所有用法之间共享(即在对象的所有实例之间)。 也就是说,如果您更改它,所有其他访问将看到更改。
非静态变量将为每个实例具有唯一值(因为它只能按实例访问)。
static
意味着它不是特定于实例的。 它属于这个class
。 通常它与最终结果一致。
public static final int MAX = 10000; // Defined in MyClass // Somewhere else you could do int max = MyClass.MAX; // notice no instance of MyClass needed.
编辑:它不必是最终的,只要一个人小心,非最终变量就可以了。
修饰符static将变量定义为类变量,这意味着只有一个变量。 没有它,变量是一个可实例化的变量,因此每个Object都存在这个变量。
例如:
class Test { static int i; int j; } class Test 2 { public static void main(String args[]) { Test test1 = new Test(); Test test2 = new Test(); test1.i = 1; test1.j = 2; test2.i = 3; test2.j = 4; System.out.println("test1.i: "+test1.i); System.out.println("test1.j: "+test1.j); System.out.println("test2.i: "+test2.i); System.out.println("test2.j: "+test2.j); } }
如果创建Test类的2个对象,则两个对象将“共享” i变量。 但是每个对象都有自己的j变量。
在上面的例子中,输出将是
test1.i: 3 test1.j: 2 test2.i: 3 test2.j: 4
您可以在The Java Tutorials – Variables中阅读更多相关信息
static int:每个应用程序一个变量无需对象即可访问。
int:每个对象一个变量没有对象就无法访问。
在类中使用’int’意味着在类的每个实例上都存在整数字段。 使用’static int’表示类上存在整数字段(而不是在类的每个实例上)
static int
,可以直接访问而无需使用对象。 int
,不使用对象无法直接访问。