Java中的static關鍵字解析

2021-09-10 14:25:20 字數 2126 閱讀 6764

1)static方法

「static方法就是沒有this的方法。在static方法內部不能呼叫非靜態方法,反過來是可以

的。而且可以在沒有建立任何物件的前提下,僅僅通過類本身來呼叫static方法。

這實際上正是static方法的主要用途。」//

/簡而言之,一句話來描述就是:

方便在沒有建立物件的情況下來進行呼叫(方法/變數)。

很顯然,被static關鍵字修飾的方法或者變數不需要依賴於物件來進行訪問

只要類被載入了,就可以通過類名去進行訪問

static可以用來修飾類的成員方法、類的成員變數,另外可以編寫static**塊來優化程式效能。//

/

/**

* @author 王韌鋒qaq

因為如果說想在不建立物件的情況下呼叫某個方法,就可以將這個方法設定為static。我們最常見的static方法就是main方法,至於為什麼main方法必須是static的,現在就很清楚了。因為程式在執行main方法的時候沒有建立任何物件,因此只有通過類名來訪問。

2)static變數

3)static**塊

static關鍵字還有乙個比較關鍵的作用就是 用來形成靜態**塊以優化程式效能。static塊可以置於類中的任何地方,類中可以有多個static塊。在類初次被載入的時候,會按照static塊的順序來執行每個static塊,並且只會執行一次。

為什麼說static塊可以用來優化程式效能,因為特用於初始化的時候只有在類載入的時候才會被初始化,且只有 一次,所以絕大部分不會造成空間的浪費!

1.static關鍵字會改變類中成員的訪問許可權嗎? 答:不會

2.能通過this訪問靜態成員變數嗎? 答:能

public class test extends base

public test()

public static void main(string args) }

class base

public base()

}

base static

test static

base constructor

test constructor

2.這段**的輸出結果是什麼?

public class test 

public test()

public static void main(string args) }

class person

public person(string str) }

class myclass extends test

public myclass()

}

test static

myclass static

person static

person test

test constructor

person myclass

myclass constructor

3.這段**的輸出結果是什麼?

public class test 

public static void main(string args)

static

}

test static 1

test static 2

Java中static關鍵字

靜態結構的生命週期要早於非靜態結構,同時 也要晚於非靜態結構 執行結果 變數變數值 c2.nation null c2.nation china public void test2 執行結果 輸出china 內容與靜態屬性大體相同 1.靜態方法內只能呼叫本類靜態屬性或靜態方法 2.靜態方法裡面是不能...

java中static關鍵字

一 可修飾成員變數和方法 靜態函式要注意的事項 1.靜態函式可呼叫類名或物件呼叫,而非靜態函式只能使用物件呼叫。2.靜態函式可直接訪問靜態成員,但不能訪問非靜態成員。原因 靜態函式可通過類名直接呼叫,這時可能還未存在非靜態成員,因為其是根據物件生成的。二 執行順序 靜態 塊的執行順序優先於非靜態 塊...

java中static關鍵字

static 方便在沒有建立物件的情況來呼叫 可以用來修飾類的成員方法 成員變數,塊 內部靜態類 靜態匯入包 1 靜態變數 被static修飾的變數叫靜態變數 或類變數 否則為例項變數,靜態變數類載入時分配一次記憶體,可以直接類名訪問 例項變數建立物件時被初始化,存在多個副本,互不影響。2 靜態方法...