Java中的static關(guān)鍵字有以下幾個(gè)作用:
1. 靜態(tài)變量:使用static關(guān)鍵字聲明的變量是靜態(tài)變量,也稱(chēng)為類(lèi)變量。靜態(tài)變量在類(lèi)加載時(shí)被初始化,且只有一份拷貝,被所有實(shí)例共享??梢酝ㄟ^(guò)類(lèi)名直接訪問(wèn)靜態(tài)變量,無(wú)需創(chuàng)建對(duì)象。
2. 靜態(tài)方法:使用static關(guān)鍵字聲明的方法是靜態(tài)方法,也稱(chēng)為類(lèi)方法。靜態(tài)方法可以直接通過(guò)類(lèi)名調(diào)用,無(wú)需創(chuàng)建對(duì)象。靜態(tài)方法只能訪問(wèn)靜態(tài)變量和調(diào)用其他靜態(tài)方法,不能訪問(wèn)非靜態(tài)成員。
3. 靜態(tài)代碼塊:使用static關(guān)鍵字聲明的代碼塊是靜態(tài)代碼塊。靜態(tài)代碼塊在類(lèi)加載時(shí)執(zhí)行,用于初始化靜態(tài)變量或執(zhí)行一些只需執(zhí)行一次的操作。
4. 靜態(tài)內(nèi)部類(lèi):使用static關(guān)鍵字聲明的內(nèi)部類(lèi)是靜態(tài)內(nèi)部類(lèi)。靜態(tài)內(nèi)部類(lèi)與外部類(lèi)的實(shí)例無(wú)關(guān),可以直接通過(guò)外部類(lèi)名訪問(wèn)。
5. 靜態(tài)導(dǎo)入:使用static關(guān)鍵字可以導(dǎo)入類(lèi)的靜態(tài)成員,使其可以直接使用,無(wú)需通過(guò)類(lèi)名限定。
靜態(tài)成員具有以下特點(diǎn):
- 靜態(tài)成員在內(nèi)存中只有一份拷貝,被所有實(shí)例共享。
- 靜態(tài)成員可以通過(guò)類(lèi)名直接訪問(wèn),無(wú)需創(chuàng)建對(duì)象。
- 靜態(tài)成員在類(lèi)加載時(shí)被初始化,且在整個(gè)程序運(yùn)行期間保持不變。
需要注意的是,靜態(tài)成員不能訪問(wèn)非靜態(tài)成員,因?yàn)榉庆o態(tài)成員是與實(shí)例相關(guān)的,而靜態(tài)成員是與類(lèi)相關(guān)的。靜態(tài)成員的生命周期與類(lèi)的生命周期相同,即在類(lèi)被卸載時(shí)才會(huì)被銷(xiāo)毀。