關(guān)于Java中靜態(tài)代碼塊的執(zhí)行淺析
前言
一般情況下,如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行的時(shí)候,需要使用靜態(tài)代碼塊,這種代碼是主動(dòng)執(zhí)行的;需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化,在不創(chuàng)建對(duì)象的情況下,其他程序來調(diào)用的時(shí)候,需要使用靜態(tài)方法,這種代碼是被動(dòng)執(zhí)行的, 靜態(tài)方法在類加載的時(shí)候就已經(jīng)加載,可以用類名直接調(diào)用。
比如main方法就必須是靜態(tài)的,這是程序入口
兩者的區(qū)別就是:
- 靜態(tài)代碼塊是自動(dòng)執(zhí)行的;
- 靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的.
問題及總結(jié)
關(guān)于靜態(tài)代碼塊其實(shí)是面試時(shí)老生常談的問題,雖然面試時(shí)問了我也大概知道,但是在用的時(shí)候還是踩了個(gè)小坑。我想通過調(diào)用類的靜態(tài)變量來觸發(fā)靜態(tài)代碼塊的調(diào)用,但是沒有成功。
總結(jié)下靜態(tài)代碼塊能執(zhí)行的條件:
第一次初始化對(duì)象
第一次調(diào)用靜態(tài)方法
第一次調(diào)用靜態(tài)代碼塊下面的靜態(tài)變量
public class ConfigHandler {
public static p1 = “p1”;
static{
System.out.println("this is a static code block");
}
public static p2 = “p2”;
public static p3 ;
public static init(){}
}
static中System.out.println("this is a static code block");可以執(zhí)行的情況如下:
new ConfigHandler();System.out.println(ConfigHandler.p2);System.out.println(ConfigHandler.p3)ConfigHandler.init();//在代碼中的位置任意
輸出p1時(shí)static代碼塊不執(zhí)行,即調(diào)用靜態(tài)代碼塊前面的靜態(tài)變量,靜態(tài)代碼塊不會(huì)執(zhí)行。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Spring整合TimerTask實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度
這篇文章主要介紹了Spring整合TimerTask實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
springboot實(shí)現(xiàn)敏感字段加密存儲(chǔ)解密顯示功能
這篇文章主要介紹了springboot實(shí)現(xiàn)敏感字段加密存儲(chǔ),解密顯示,通過mybatis,自定義注解+AOP切面,Base64加解密方式實(shí)現(xiàn)功能,本文通過代碼實(shí)現(xiàn)給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
Java TCP網(wǎng)絡(luò)通信協(xié)議詳細(xì)講解
TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會(huì)保證數(shù)據(jù)不丟包、不亂序。TCP全名是Transmission?Control?Protocol,它是位于網(wǎng)絡(luò)OSI模型中的第四層2022-09-09
SpringBoot定制JSON響應(yīng)數(shù)據(jù)返回的示例代碼
@JsonView 是 Jackson 庫中的一個(gè)注解,它允許你定義哪些屬性應(yīng)該被序列化到 JSON 中,基于不同的“視圖”或“配置”,在本文中,通過了解@JsonView,你將能夠更好地掌握如何在Spring Boot應(yīng)用中定制JSON數(shù)據(jù)的輸出,需要的朋友可以參考下2024-05-05
Java實(shí)現(xiàn)多文件壓縮加密并重命名壓縮文件對(duì)象的方法
這篇文章主要介紹了Java實(shí)現(xiàn)多文件壓縮加密并重命名壓縮文件對(duì)象的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Java調(diào)用第三方接口示范的實(shí)現(xiàn)
這篇文章主要介紹了Java調(diào)用第三方接口示范的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
mybatisplus的連表增強(qiáng)插件mybatis plus join
本文主要介紹了mybatisplus的連表增強(qiáng)插件mybatis plus join,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
JAVA中時(shí)間戳與LocalDateTime互相轉(zhuǎn)換代碼例子
最近在編碼過程中遇到將時(shí)間戳轉(zhuǎn)化為 LocalDateTime,所以這里給總結(jié)下,這篇文章主要給大家介紹了關(guān)于JAVA中時(shí)間戳與LocalDateTime互相轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2023-11-11
SpringCloud配置動(dòng)態(tài)更新原理解析
在微服務(wù)架構(gòu)的浩瀚星海中,服務(wù)配置的動(dòng)態(tài)更新如同魔法一般,能夠讓應(yīng)用在不重啟的情況下,實(shí)時(shí)響應(yīng)配置的變更,Spring Cloud作為微服務(wù)架構(gòu)中的佼佼者,其動(dòng)態(tài)配置更新的能力尤為引人注目,本文給大家介紹了SpringCloud配置動(dòng)態(tài)更新原理,需要的朋友可以參考下2025-01-01

