淺談Java中對(duì)類(lèi)的主動(dòng)引用和被動(dòng)引用
本文研究的主要是Java中類(lèi)的主動(dòng)引用和被動(dòng)引用,具體介紹如下。
主動(dòng)引用,這里介紹的是主動(dòng)引用的五種場(chǎng)景
1、遇到new,getstatic,putstatic,invokestatic這4條字節(jié)碼指令時(shí),類(lèi)如果沒(méi)初始化就會(huì)被初始化,創(chuàng)建對(duì)象,讀取或設(shè)置靜態(tài)字段,調(diào)用靜態(tài)方法。
2、反射
3、子類(lèi)初始化前會(huì)先初始化父類(lèi)
4、包含main方法的類(lèi),虛擬機(jī)啟動(dòng)時(shí)會(huì)先初始化該類(lèi)
5、使用jdk的動(dòng)態(tài)語(yǔ)言支持時(shí)(不明)
被動(dòng)引用:
class SuperClass{
static{
syso("super init");
}
public static int value=123;
}
class SubClass extends SuperClass{
static{
syso("sub init")}
}
public class ConstantClass{
public static final HW="helloworld";
}
public class NotInitialization{
main(){
syso( SubClass.value)
//SuperClass sc[] =new SuperClass[10]
//syso(ConstantClass.HW);
}}
輸出:super init 123,對(duì)于靜態(tài)字段的訪問(wèn)只有直接定義這個(gè)字段的類(lèi)才會(huì)被初始化,子類(lèi)不會(huì)初始化,把第一個(gè)注釋取消后運(yùn)行 ,并沒(méi)有任何輸出,通過(guò)數(shù)組定義引用類(lèi)也不會(huì)觸發(fā)類(lèi)的初始化,但是會(huì)初始化一個(gè)由虛擬機(jī)自動(dòng)生成繼承自object類(lèi)的子類(lèi)的初始化,這個(gè)類(lèi)代表了數(shù)組,數(shù)組的屬性和方法都實(shí)現(xiàn)在這個(gè)類(lèi)里(length屬性和clone()),第二個(gè)注釋取消后也不會(huì)有輸出,常量在編譯期間就會(huì)被放入常量池,ConstantClass.HW在編譯期間就被放入NotInitialization類(lèi)的常量池,NotInitialization并不會(huì)有NotInitialization的符號(hào)引用。
總結(jié)
以上就是本文關(guān)于淺談Java中對(duì)類(lèi)的主動(dòng)引用和被動(dòng)引用的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- Java中四種引用類(lèi)型詳細(xì)介紹
- JAVA中值類(lèi)型和引用類(lèi)型的區(qū)別
- Java多態(tài)和實(shí)現(xiàn)接口的類(lèi)的對(duì)象賦值給接口引用的方法(推薦)
- Java中int與integer的區(qū)別(基本數(shù)據(jù)類(lèi)型與引用數(shù)據(jù)類(lèi)型)
- Java/Android引用類(lèi)型及其使用全面分析
- 全面解析Java中的引用類(lèi)型
- 對(duì)Java的面對(duì)對(duì)象編程中對(duì)象和引用以及內(nèi)部類(lèi)的理解
- java的引用類(lèi)型的詳細(xì)介紹
相關(guān)文章
解決2022.3.1版本中?IDEA中?XML文件提示屎黃色背景的方法
這篇文章主要介紹了解決2022.3.1版本中?IDEA中?XML文件屎黃色背景?的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
SpringBoot使用JWT實(shí)現(xiàn)登錄驗(yàn)證的方法示例
這篇文章主要介紹了SpringBoot使用JWT實(shí)現(xiàn)登錄驗(yàn)證的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Array?Index?Out?of?Bounds:數(shù)組越界錯(cuò)誤解決方案及調(diào)試技巧
數(shù)組越界訪問(wèn)是指訪問(wèn)數(shù)組中超出其有效索引范圍的元素,這是一種常見(jiàn)的編程錯(cuò)誤,可能導(dǎo)致程序崩潰或數(shù)據(jù)損壞,下面這篇文章主要給大家介紹了關(guān)于Array?Index?Out?of?Bounds:數(shù)組越界錯(cuò)誤解決方案及調(diào)試技巧的相關(guān)資料,需要的朋友可以參考下2024-08-08
ZooKeeper框架教程Curator分布式鎖實(shí)現(xiàn)及源碼分析
本文是ZooKeeper入門(mén)系列教程,本篇為大家介紹zookeeper一個(gè)優(yōu)秀的框架Curator,提供了各種分布式協(xié)調(diào)的服務(wù),Curator中有著更為標(biāo)準(zhǔn)、規(guī)范的分布式鎖實(shí)現(xiàn)2022-01-01
ThreadLocal線(xiàn)程在Java框架中的應(yīng)用及原理深入理解
這篇文章主要介紹了ThreadLocal在Java框架中的應(yīng)用及原理深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
SpringBoot實(shí)現(xiàn)HTTP調(diào)用的七種方式總結(jié)
小編在工作中,遇到一些需要調(diào)用三方接口的任務(wù),就需要用到 HTTP 調(diào)用工具,這里,我總結(jié)了一下 實(shí)現(xiàn) HTTP 調(diào)用的方式,共有 7 種(后續(xù)會(huì)繼續(xù)新增),需要的朋友可以參考下2023-09-09
SpringBoot Redis實(shí)現(xiàn)接口冪等性校驗(yàn)方法詳細(xì)講解
這篇文章主要介紹了SpringBoot Redis實(shí)現(xiàn)接口冪等性校驗(yàn)方法,近期一個(gè)老項(xiàng)目出現(xiàn)了接口冪等性校驗(yàn)問(wèn)題,前端加了按鈕置灰,依然被人拉著接口參數(shù)一頓輸出,還是重復(fù)調(diào)用了接口,通過(guò)復(fù)制粘貼,完成了后端接口冪等性調(diào)用校驗(yàn)2022-11-11
java實(shí)現(xiàn)Excel轉(zhuǎn)換為圖片
在實(shí)際開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)有這樣的需求,需要將Excel表格或特定區(qū)域轉(zhuǎn)換為圖片,所以小編今天就來(lái)為大家介紹一下如何使用Java將Excel轉(zhuǎn)化為圖片吧2023-10-10

