使用静态与此
Static 提供了一个方法或变量存储,它没有为每个类实例分配。相反,静态变量在所有类成员之间共享。顺便说一句,尝试将静态变量视为类实例的成员将导致警告:
public class Apple {
public static int test;
public int test2;
}
Apple a = new Apple();
a.test = 1; // Warning
Apple.test = 1; // OK
Apple.test2 = 1; // Illegal: test2 is not static
a.test2 = 1; // OK
声明为 static 的方法的行为方式大致相同,但有一个额外的限制:
你不能在其中使用
this
关键字!
public class Pineapple {
private static int numberOfSpikes;
private int age;
public static getNumberOfSpikes() {
return this.numberOfSpikes; // This doesn't compile
}
public static getNumberOfSpikes() {
return numberOfSpikes; // This compiles
}
}
通常,最好声明适用于类的不同实例(例如克隆方法)static
的泛型方法,同时将 equals()
等方法保持为非静态方法。Java 程序的 main
方法总是静态的,这意味着关键字 this
不能在 main()
中使用。