使用靜態與此
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()
中使用。