使用靜態與此

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() 中使用。