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

