欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java類加載連接和初始化原理解析

 更新時(shí)間:2020年03月11日 10:24:12   作者:lkc9  
這篇文章主要介紹了Java類加載連接和初始化原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1、當(dāng)程序使用某個(gè)類時(shí),JVM將會(huì)完成以下這三個(gè)步驟

2、連接

  1)驗(yàn)證

    驗(yàn)證是否是合法的字節(jié)碼文件。驗(yàn)證JDK版本是否正確等。

  2)準(zhǔn)備

    給成員變量(類變量/靜態(tài)變量)賦默認(rèn)值

    把常量(final)等值在方法區(qū)的常量池中給準(zhǔn)備好。

  3)解析

    虛擬機(jī)常量池內(nèi)的符號(hào)引用(常量名)替換為引用(地址)的過(guò)程

3、初始化  <clinit> 類初始化

  <clinit> 類初始化由兩部分組成:

  (1)靜態(tài)變量的顯示初始化代碼,賦值代碼

 ?。?)靜態(tài)代碼塊

    (1) 和 (2) 的順序從上往下

  

  當(dāng)一個(gè)類初始化時(shí),發(fā)現(xiàn)他的父類沒(méi)有初始化,會(huì)先初始化父類。

  每一個(gè)類只會(huì)初始化一次,并且初始化的過(guò)程時(shí)線程安全的。

哪些操作會(huì)導(dǎo)致類的初始化?這句話的意思是:類的加載不一定就會(huì)發(fā)生類初始化。

- 以下操作會(huì)發(fā)生類初始化:

  1)main方法所在的類加載時(shí)

  2)new一個(gè)類的對(duì)象時(shí)

  3)調(diào)用該類的靜態(tài)變量(final的常量除外) 和 靜態(tài)方法時(shí)

  4)使用 java.lang.reflect 包的方法對(duì)類進(jìn)行反射調(diào)用時(shí)

  5)當(dāng)初始化一個(gè)類,如果其父類沒(méi)有被初始化,則先會(huì)初始化他的父類

- 以下操起不會(huì)發(fā)生類的初始化:

  1)引用靜態(tài)常量不會(huì)觸發(fā)此類的初始化(常量在連接階段就存入了方法區(qū)的常量池中)

  2)當(dāng)訪問(wèn)一個(gè)靜態(tài)域時(shí),只有真正聲明這個(gè)域的類才會(huì)被初始化

    當(dāng)通過(guò)子類引用父類的靜態(tài)變量,不會(huì)導(dǎo)致子類初始化

  

  3)通過(guò)數(shù)組定義類引用,不會(huì)觸發(fā)此類的初始化

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 精通Java接口的使用與原理

    精通Java接口的使用與原理

    接口,在JAVA編程語(yǔ)言中是一個(gè)抽象類型,是抽象方法的集合,接口通常以interface來(lái)聲明。一個(gè)類通過(guò)繼承接口的方式,從而來(lái)繼承接口的抽象方法
    2022-03-03
  • 詳解Java類庫(kù)的概念以及import的使用方法

    詳解Java類庫(kù)的概念以及import的使用方法

    這篇文章主要介紹了詳解Java類庫(kù)的概念以及import的使用方法,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • RestTemplate集成Ribbbon的示例代碼

    RestTemplate集成Ribbbon的示例代碼

    這篇文章主要介紹了RestTemplate集成Ribbbon的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 利用Maven入手Spring Boot第一個(gè)程序詳解

    利用Maven入手Spring Boot第一個(gè)程序詳解

    這篇文章主要給大家介紹了關(guān)于如何利用Maven入手Spring Boot第一個(gè)程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • MyBatis-Plus常見(jiàn)面試題和答案大全

    MyBatis-Plus常見(jiàn)面試題和答案大全

    Mybatis-Plus是一個(gè)基于Mybatis的增強(qiáng)工具,它簡(jiǎn)化了Mybatis的開(kāi)發(fā)流程,提供了許多實(shí)用的功能,如自動(dòng)生成代碼、分頁(yè)查詢、條件構(gòu)造器、性能分析等,這篇文章主要給大家介紹了關(guān)于MyBatis-Plus常見(jiàn)面試題和答案的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 關(guān)于Java三大特性之多態(tài)的總結(jié)

    關(guān)于Java三大特性之多態(tài)的總結(jié)

    這篇文章主要介紹了關(guān)于Java三大特性之多態(tài)的總結(jié),內(nèi)容詳細(xì),涉及多態(tài)的定義,存在條件,好處,分類及實(shí)現(xiàn)方式等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException

    Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException

    這篇文章主要為大家介紹了Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException解決及原因分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 使用maven對(duì)springboot項(xiàng)目進(jìn)行瘦身分離jar的多種處理方案

    使用maven對(duì)springboot項(xiàng)目進(jìn)行瘦身分離jar的多種處理方案

    springboot項(xiàng)目打包一般我們都使用它自帶的spring-boot-maven-plugin插件,這個(gè)插件默認(rèn)情況下,會(huì)把所有的依賴包全部壓縮到一個(gè)jar里面,今天給大家分享幾種方案來(lái)如何減小我們的打包文件,需要的朋友可以參考下
    2024-02-02
  • SpringBoot多環(huán)境開(kāi)發(fā)與日志小結(jié)

    SpringBoot多環(huán)境開(kāi)發(fā)與日志小結(jié)

    這篇文章主要介紹了SpringBoot多環(huán)境開(kāi)發(fā)與日志,下面給大家說(shuō)一下如何基于多環(huán)境開(kāi)發(fā)做配置獨(dú)立管理,務(wù)必掌握,需要的朋友可以參考下
    2022-08-08
  • Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限詳解

    Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限詳解

    這篇文章主要介紹了Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限詳解, 通過(guò)Mybatis攔截器我們可以攔截某些方法的調(diào)用,我們可以選擇在這些被攔截的方法執(zhí)行前后加上某些邏輯,需要的朋友可以參考下
    2023-11-11

最新評(píng)論