亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 Java Java入門 java類別在什麼時候載入

java類別在什麼時候載入

Nov 13, 2019 am 11:36 AM
java

java類別在什麼時候載入

類別何時載入

#類別的載入是透過類別載入器(Classloader)完成的,它既可以是餓漢式[eagerly load](只要有其它類引用了它就加載)加載類,也可以是懶加載[lazy load](等到類初始化發(fā)生的時候才加載)。 ? ? ? ? (建議學(xué)習(xí):java課程

不過我相信這跟不同的JVM實(shí)作有關(guān),然而他又是受JLS保證的(當(dāng)有靜態(tài)初始化需求的時候才被加載)。

類別何時初始化

載入完類別後,類別的初始化就會發(fā)生,表示它會初始化所有類別靜態(tài)成員,以下情況一個類別被初始化:

實(shí)例透過使用new()關(guān)鍵字建立或使用class.forName()反射,但它有可能導(dǎo)致ClassNotFoundException。

類別的靜態(tài)方法被呼叫

類別的靜態(tài)域被賦值

靜態(tài)域被訪問,而且它不是常數(shù)

在頂層類別中執(zhí)行assert語句

反射同樣可以使類別初始化,例如java.lang.reflect套件下面的某些方法,JLS嚴(yán)格的說明:一個類別不會被任何除以上之外的原因初始化。

類別是如何被初始化的

現(xiàn)在我們知道何時觸發(fā)類別的初始化了,他精確地寫在Java語言規(guī)格中。但了解清楚域(fields,靜態(tài)的還是非靜態(tài)的)、塊(block靜態(tài)的還是非靜態(tài)的)、不同類(子類和超類)和不同的接口(子接口,實(shí)現(xiàn)類和超接口)的初始化順序也很重要類別。

事實(shí)上很多核心Java面試題和SCJP問題都是基於這些概念,以下是類別初始化的一些規(guī)則:

類別從頂至底的順序初始化,所以聲明在頂部的字段的早於底部的字段初始化

超類早於子類和衍生類的初始化

如果類的初始化是由於訪問靜態(tài)域而觸發(fā),那麼只有宣告靜態(tài)域的類別才會被初始化,而不會觸發(fā)超類別的初始化或子類別的初始化即使靜態(tài)域被子類別或子介面或它的實(shí)作類別所引用。

介面初始化不會導(dǎo)致父介面的初始化。

靜態(tài)域的初始化是在類別的靜態(tài)初始化期間,非靜態(tài)域的初始化時在類別的實(shí)例建立期間。這意味著這靜態(tài)域初始化在非靜態(tài)域之前。

非靜態(tài)域透過建構(gòu)器初始化,子類別在做任何初始化之前建構(gòu)器會隱含地呼叫父類別的建構(gòu)器,他保證了非靜態(tài)或?qū)嵗償?shù)(父類別)初始化早於子類別

以上是java類別在什麼時候載入的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區(qū)級路徑,用於自定義VSCode設(shè)置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級路徑:項目根目錄下的.vscode/settings

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

在Java的掌握依賴注入春季和Guice 在Java的掌握依賴注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

Python Itertools組合示例 Python Itertools組合示例 Jul 31, 2025 am 09:53 AM

itertools.combinations用於生成從可迭代對像中選取指定數(shù)量元素的所有不重複組合(順序無關(guān)),其用法包括:1.從列表中選2個元素組合,如('A','B')、('A','C')等,避免重複順序;2.對字符串取3個字符組合,如"abc"、"abd",適用於子序列生成;3.求兩數(shù)之和等於目標(biāo)值的組合,如1 5=6,簡化雙重循環(huán)邏輯;組合與排列的區(qū)別在於順序是否重要,combinations視AB與BA為相同,而permutations視為不同;

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

Google Chrome無法打開本地文件 Google Chrome無法打開本地文件 Aug 01, 2025 am 05:24 AM

ChromecanopenlocalfileslikeHTMLandPDFsbyusing"Openfile"ordraggingthemintothebrowser;ensuretheaddressstartswithfile:///;2.SecurityrestrictionsblockAJAX,localStorage,andcross-folderaccessonfile://;usealocalserverlikepython-mhttp.server8000tor

如何使用Prometheus和Grafana監(jiān)視Java應(yīng)用程序 如何使用Prometheus和Grafana監(jiān)視Java應(yīng)用程序 Jul 31, 2025 am 09:42 AM

TomonitoraJavaapplicationwithPrometheusandGrafana,firstinstrumenttheappusingMicrometerbyaddingmicrometer-registry-prometheusandSpringBootActuatordependencies,thenexposethe/actuator/prometheusendpointviaconfigurationinapplication.yml.2.SetupPrometheus

See all articles