Java的static關鍵字

1. Static關鍵字

1.1 靜態方法

static標記的方法被稱爲靜態方法。

  • 靜態方法在調用的時候不需要實例化對象

  • 靜態方法直接通過類的名稱來調用的

  • 靜態方法內部只能調用靜態變量和其他靜態方法,但是非靜態方法可以調用靜態方法

  • 靜態方法中不能使用this

  • 靜態方法不能自動銷燬,自建立開始靜態方法一直存在內存中,直到JVM關閉

  • 子類在調用之前,父類中所有的靜態方法都會執行

靜態方法的本質是共享代碼段,類中的靜態方法和靜態變量在創建後共用一塊內存

1.2 靜態變量

靜態變量在類被加載的時候就初始化了,在該類的任何靜態方法執行之前就初始化,類的所有實例對象共享同一個靜態變量

在這裏插入圖片描述

靜態變量的本質是共享數據段,所以一旦改變一個對象中靜態變量的值後,其所有實例對象的該變量值也會隨之改變

用一個例子來說明靜態方法的執行:

public class StaticSuper {
    static {
        System.out.println("super static block");
    }
    StaticSuper() {
        System.out.println("super constructor");
    }
}

public class StaticTest extends StaticSuper {
    static int rand;

    static {
        rand = (int) (Math.random()*6);
        System.out.println("static block"+rand);
    }

    StaticTest(){
        System.out.println("constructor");
    }

    public static void main(String[] args) {
        /*
        在子類的main方法執行之前,會先執行父類中的靜態方法,然後執行子類中的靜態方法
        super static block
		static block3
        */
        System.out.println("main");
        
        StaticTest staticTest = new StaticTest();
        // 先執行父類構造方法,然後執行子類構造方法
        // 輸出super constructor constructor
    }
}

2. final關鍵字

final關鍵字表示最終的意思,即不能再被修改

  • final修飾的變量不能被修改

  • final修飾的方法不能被重寫

  • final修飾的類不能被繼承

如果一個類已經標記爲final,不能其方法就不需要再被標記爲final

3. 權限修飾符

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章