1. 程式人生 > 其它 >java static關鍵字

java static關鍵字

技術標籤:javajava

“static方法就是沒有this的方法。在static方法內部不能呼叫非靜態方法,反過來是可以的。而且可以在沒有建立任何物件的前提下,僅僅通過類本身來呼叫static方法。這實際上正是static方法的主要用途。”——《java程式設計思想》


1.static方法

一般稱作靜態方法,由於靜態方法不依賴於任何物件就可以進行訪問,因此對於靜態方法來說,是沒有this的。比如:MyUtil.getDate()不需要new物件就能直接使用這些方法

2.static變數 static變數也稱作靜態變數

靜態變數被所有的物件所共享,在記憶體中只有一個副本,它當且僅當在類初次載入時會被初始化。

非靜態變數是物件所擁有的,會存在多個副本,在建立物件的時候被初始化,各個物件擁有的副本互不影響。

3.static程式碼塊

靜態程式碼塊可以置於類中的任何地方,類中可以有多個static塊。在類初次被載入的時候,會按照static塊的順序來執行每個static塊,並且只會執行一次,可以用來優化程式效能。

static變數和程式碼塊的初始化順序按照定義的順序進行初始化。

4.程式碼說明:

/**
 * @Description static關鍵字
 * @Author rll
 * @Date 2021-01-08 10:45
 */
public class TestStatic {
    //靜態變數
    private static String tmp = "test";

    //靜態方法
    private static void testStatic() {
    }

    //普通方法
    private void test() {
    }

    //變數和方法在內部呼叫
    public void print() {
        this.test();
        System.out.println(tmp);//靜態變數,如果寫成this.tmp 編譯器會有警告
        testStatic();//靜態方法,如果寫成this.testStatic() 編譯器會有警告
    }

    public static void main(String[] args) {
        String str = TestStatic.tmp;//靜態變數可直接 類名.變數名 獲取
        TestStatic.testStatic();//靜態方法可直接 類名.方法名 使用
        TestStatic ts = new TestStatic();
        ts.test();//普通方法只能先宣告類物件,再通過該物件執行方法
    }
}

我這篇內容學習自https://www.cnblogs.com/dolphin0520/p/3799052.html