色欲av一区久久精品_久久综合色综合色88_无码在线观看不卡_色黄视频网站_亚洲国产精品久久久久秋霞66

static關(guān)鍵字作用

時間:2023-05-15

靜態(tài)變量和靜態(tài)辦法
static關(guān)鍵字最基本的用法是:
1、被static潤飾的變量歸于類變量,能夠經(jīng)過類名.變量名直接引證,而不需要new出一個類來
2、被static潤飾的辦法歸于類辦法,能夠經(jīng)過類名.辦法名直接引證,而不需要new出一個類來
被static潤飾的變量、被static潤飾的辦法統(tǒng)一歸于類的靜態(tài)資源,是類實例之間共享的,換言之,一處變、處處變。JDK把不同的靜態(tài)資源放在了不同的類中而不把一切靜態(tài)資源放在一個類里邊,很多人或許想當然認為當然要這么做,可是是否想過為什么要這么做呢?個人認為主要有三個好處:
1、不同的類有自己的靜態(tài)資源,這能夠?qū)崿F(xiàn)靜態(tài)資源分類。比方和數(shù)學相關(guān)的靜態(tài)資源放在java.lang.Math中,和日歷相關(guān)的靜態(tài)資源放在java.util.Calendar中,這樣就很清晰了
2、防止重名。不同的類之間有重名的靜態(tài)變量名、靜態(tài)辦法名也是很正常的,如果一切的都放在一同不可防止的一個問題便是姓名重復,這時分怎么辦?分類放置就好了。
3、防止靜態(tài)資源類無限脹大,這很好了解。
OK,再微微深化一下,也是有些人簡單混淆的一個問題:靜態(tài)辦法能不能引證非靜態(tài)資源?靜態(tài)辦法里邊能不能引證靜態(tài)資源?非靜態(tài)辦法里邊能不能引證靜態(tài)資源?比方就以這段代碼為例,是否有錯?Service基礎(chǔ)知識
當然有錯,在第7行的當?shù)亍o妨這么思考這個問題:
靜態(tài)資源歸于類,可是是獨立于類存在的。從JVM的類加載機制的角度講,靜態(tài)資源是類初始化的時分加載的,而非靜態(tài)資源是類new的時分加載的。類的初始化早于類的new,比方Class.forName(“xxx”)辦法,便是初始化了一個類,可是并沒有new它,僅僅加載這個類的靜態(tài)資源罷了。所以關(guān)于靜態(tài)資源來說,它是不或許知道一個類中有哪些非靜態(tài)資源的;可是關(guān)于非靜態(tài)資源來說就不相同了,由于它是new出來之后發(fā)生的,因此歸于類的這些東西它都能知道。所以上面的幾個問題答案就很明確了:
1、靜態(tài)辦法能不能引證非靜態(tài)資源?不能,new的時分才會發(fā)生的東西,關(guān)于初始化后就存在的靜態(tài)資源來說,底子不知道它。
2、靜態(tài)辦法里邊能不能引證靜態(tài)資源?能夠,因為都是類初始化的時分加載的,我們相互都知道。
3、非靜態(tài)辦法里邊能不能引證靜態(tài)資源?能夠,非靜態(tài)辦法便是實例辦法,那是new之后才發(fā)生的,那么歸于類的內(nèi)容它都知道。
靜態(tài)塊
靜態(tài)塊也是static的重要應(yīng)用之一。也是用于初始化一個類的時分做操效果的,和靜態(tài)變量、靜態(tài)辦法相同,靜態(tài)塊里邊的代碼只履行一次,且只在初始化類的時分履行。靜態(tài)塊很簡單,不過提三個小細節(jié):
打印結(jié)果是:
得出第一個定論:靜態(tài)資源的加載次序是嚴厲按照靜態(tài)資源的界說次序來加載的。這和周志明教師《深化了解Java虛擬機:JVM高檔特性與最佳實踐》中類初始化中的說法“()辦法是由編譯器自動搜集類中一切類變量的賦值動作和靜態(tài)句子塊(static{}塊)中的句子合并發(fā)生的,編譯器搜集的次序是由句子在源文件中出現(xiàn)的次序所決定的”是共同的。

文章標簽:

Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號

與項目經(jīng)理交流
掃描二維碼
與項目經(jīng)理交流
掃描二維碼
與項目經(jīng)理交流
ciya68