這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)怎么進(jìn)行static的分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
十年的吉首網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整吉首建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“吉首網(wǎng)站設(shè)計(jì)”,“吉首網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
static 總結(jié)
static Fields
static Methods
static member class
static initializer
--------------------------------------------------------------------------------
static 成員調(diào)用方式:
static 是一個(gè)修飾符, 用于修飾成員(成員變量, 成員函數(shù)和成員類/接口)
當(dāng)成員被 static 修飾后, 就多了一個(gè)調(diào)用方式.
除了可以被對(duì)象調(diào)用外, 還可以直接被類名調(diào)用.
調(diào)用格式: 類名.靜態(tài)成員
1) 無論是否 new 對(duì)象, 都可采用的調(diào)用方式: 類名.靜態(tài)成員 (建議采用)
2) 必須在 new 對(duì)象之后, 才可采用的調(diào)用方式: 對(duì)象.靜態(tài)成員 (不建議采用, 閱讀性不好)
--------------------------------------------------------------------------------
static 成員特點(diǎn):
> 隨著類的加載而加載, 隨著類的消失而消失
也就是說, 靜態(tài)成員的生命周期最長(等同于類的生命周期)
> 優(yōu)先于對(duì)象而存在
靜態(tài)成員是先存在的, 而對(duì)象是后存在的
> 被所有對(duì)象所共享
> 可以直接被類名調(diào)用
--------------------------------------------------------------------------------
實(shí)例變量和類變量區(qū)別:
1. 存儲(chǔ)位置
類變量隨著類的加載而存儲(chǔ)于方法區(qū)中
實(shí)例變量隨著對(duì)象的創(chuàng)建而存儲(chǔ)于堆內(nèi)存中
2. 生命周期
類變量生命周期最長, 隨著類的加載而加載, 消失而消失
實(shí)例變量生命周期隨著對(duì)象的創(chuàng)建而創(chuàng)建, 消失而消失
3. 調(diào)用方式
實(shí)例變量只能通過對(duì)象調(diào)用
類變量既可以通過對(duì)象調(diào)用, 也可以通過類名調(diào)用.
--------------------------------------------------------------------------------
何時(shí)使用 static?
當(dāng)成員變量的值被類的所有對(duì)象所共享時(shí), 用 static 修飾, 即定義為類變量
對(duì)象中特有的數(shù)據(jù)定義為實(shí)例變量, 存在于堆內(nèi)存中
當(dāng)成員函數(shù)不操作任何成員變量或只操作 static 成員變量時(shí), 用 static 修飾
成員類/接口呢??? static member class 呢?
--------------------------------------------------------------------------------
static 使用注意事項(xiàng)
> 靜態(tài)只能訪問靜態(tài)
非靜態(tài)可以訪問靜態(tài)也可以訪問非靜態(tài)
> 靜態(tài)中不可以使用 this, super 關(guān)鍵字
因?yàn)殪o態(tài)優(yōu)先于對(duì)象存在, 所以靜態(tài)中不能使用 this, super 關(guān)鍵字
> 主函數(shù)是靜態(tài)的
--------------------------------------------------------------------------------
static 利與弊
好處:
對(duì)所有對(duì)象的共享數(shù)據(jù)進(jìn)行單獨(dú)空間的存儲(chǔ), 節(jié)省空間. 沒必要每個(gè)對(duì)象都存儲(chǔ)一份.
可以直接被類名調(diào)用
弊端:
生命周期過長
訪問出現(xiàn)局限性(靜態(tài)雖好, 只能訪問靜態(tài))
--------------------------------------------------------------------------------
主函數(shù) main 的定義
public static void main(String[] args) {}
主函數(shù)是一個(gè)特殊的函數(shù). 作為程序的入口, 可以被 JVM 調(diào)用.
主函數(shù)必須是固定格式的, 才能被 JVM 識(shí)別.
主函數(shù)定義的特點(diǎn):
public: 代表著該函數(shù)的訪問權(quán)限是跨包的
static: 代表著主函數(shù)隨著類的加載而加載
不需要?jiǎng)?chuàng)建對(duì)象, 直接用主函數(shù)所屬類名即可調(diào)用.
命令行窗口輸入 java StaticDemo 時(shí), 實(shí)際上就是在執(zhí)行 Static.main(String[])
void: 主函數(shù)沒有具體的返回值
main: 不是關(guān)鍵字, 但是是一個(gè)特殊的單詞, 可以被 JVM 識(shí)別.
(String[] args): 主函數(shù)的參數(shù)列表. 參數(shù)類型是一個(gè)字符串類型的數(shù)組.
主函數(shù) main 也具備一般函數(shù)的特點(diǎn), 可以重載.
但是 JVM 只調(diào)用形參列表為 String[] 的 main 函數(shù).
主函數(shù) main 的形參名字可以更改, 仍然可以被 JVM 識(shí)別.
如何通過 main 函數(shù)給 JVM 傳遞參數(shù)
--------------------------------------------------------------------------------
static 的應(yīng)用 - 工具類
每一個(gè)應(yīng)用程序中都有共性的功能. 可以將這些功能進(jìn)行抽取, 獨(dú)立封裝, 以便復(fù)用.
--------------------------------------------------------------------------------
靜態(tài)代碼塊
聲明格式:
static {
執(zhí)行語句;
}
特點(diǎn):
隨著類的加載而執(zhí)行 // new 對(duì)象或引用類的靜態(tài)成員時(shí)可觸發(fā)類的加載
類是否加載, 可通過添加 static 代碼塊驗(yàn)證
只執(zhí)行一次 // 因類只加載一次
優(yōu)先于主函數(shù)執(zhí)行 // 因執(zhí)行主函數(shù)之前需先加載主函數(shù)所在的類
只能訪問類的靜態(tài)成員, 不能訪問非靜態(tài)成員
作用:
用于給類進(jìn)行初始化
--------------------------------------------------------------------------------
何時(shí)可觸發(fā)類加載?
new 對(duì)象或引用類的靜態(tài)成員時(shí)可觸發(fā)類的加載
只創(chuàng)建類類型的引用變量時(shí)不會(huì)觸發(fā)類的加載
主函數(shù)所屬類的static代碼塊優(yōu)先于主函數(shù)執(zhí)行
--------------------------------------------------------------------------------
static 代碼塊, 構(gòu)造代碼塊和構(gòu)造函數(shù)比較
(1) static代碼塊: 用于類初始化. 隨類加載執(zhí)行且只執(zhí)行一次.
(2) 構(gòu)造代碼塊: 用于所有對(duì)象初始化. new一個(gè)對(duì)象執(zhí)行一次。
(3) 構(gòu)造函數(shù): 對(duì)應(yīng)對(duì)象初始化. 若new該構(gòu)造函數(shù)對(duì)應(yīng)的對(duì)象則該構(gòu)造函數(shù)執(zhí)行一次.
(4) 訪問限制:
static 代碼塊只能訪問 static 成員;
構(gòu)造代碼塊能調(diào)用 static 和非 static 成員, 但不能調(diào)用構(gòu)造函數(shù);
構(gòu)造函數(shù)可以調(diào)用 static, 非 static 和其他構(gòu)造函數(shù).
(5) 執(zhí)行順序:static 代碼塊->構(gòu)造代碼塊->對(duì)應(yīng)構(gòu)造函數(shù)
類加載時(shí), 做類的初始化動(dòng)作, 執(zhí)行且只執(zhí)行一次 static 代碼塊;
new 對(duì)象時(shí), 若類未加載則先加載類, 若已加載則做對(duì)象的初始化動(dòng)作, 依次執(zhí)行構(gòu)造代碼塊, 對(duì)應(yīng)構(gòu)造函數(shù).
ps:new 對(duì)象不一定會(huì)加載類, 因類可能早已加載.
上述就是小編為大家分享的怎么進(jìn)行static的分析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。