導航:首頁 > 編程語言 > java類什麼時候載入

java類什麼時候載入

發布時間:2022-11-04 07:17:43

java靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中,還是當被調用的時候才進行載入呢

當類第一次被調用時載入(靜態方法,靜態屬性的載入就是類載入) 。

1、類中的靜態屬性會被加入到類對象(也可以叫做類的模板,是類的描述) 的構造器中,靜態方法也會被加入到類對象中。

2、當第一次使用類時,JVM會通過類載入器,載入類對象,從而初始化靜態屬性,並裝入類的方法,包括靜態方法和實例方法(方法不會被調用,只是載入,從這個意義上來說,靜態方法和實例方法是類似的)。

3、當創建類的實例對象時,JVM會調用類的構造器,從而初始化類的屬性。

(1)java類什麼時候載入擴展閱讀:

類(包括靜態方法、屬性)載入過程:

一、載入。

根據一個類的全限定名(如cn.e.h.test.HelloWorld.class)來讀取此類的二進制位元組流到JVM內部。

將位元組流所代表的靜態存儲結構轉換為方法區的運行時數據結構(hotspot選擇將Class對象存儲在方法區中,Java虛擬機規范並沒有明確要求一定要存儲在方法區或堆區中)轉換為一個與目標類型對應的java.lang.Class對象。

二、連接。

1、驗證。

驗證階段主要包括四個檢驗過程:文件格式驗證、元數據驗證、位元組碼驗證和符號引用驗證;

2、准備。

為類中的所有靜態變數分配內存空間,並為其設置一個初始值(由於還沒有產生對象,實例變數將不再此操作范圍內);

3、解析。

將常量池中所有的符號引用轉為直接引用(得到類或者欄位、方法在內存中的指針或者偏移量,以便直接調用該方法)。這個階段可以在初始化之後再執行。

⑵ java中類的載入是在什麼時候做的

樓上的負責一點好么,類載入是在編譯的時候?載入一個類需要用到載入器,
你程序都沒運行,jvm都沒啟動,哪來的載入器,你拿什麼去載入一個類?
類載入的時候是運行程序時 它就載入了,至於編譯,你用IDE,是你一保存,它就給編譯好了。

⑶ Java 類何時會被載入進JVM

  1. 生成該類對象的時候,會載入該類及該類的所有父類;

  2. 訪問該類的靜態成員(成員變數,成員方法)的時候;

  3. 使用class.forName("類名");

⑷ java中的類和對象分別是在什麼時候被載入和銷毀

類是當第一次運行的時候就會被載入,方法是當執行到的時候才會被載入,等全部執行完就會立即銷毀.如果想讓執行後的結果保存在物理介質中,需要定義輸出的位元組流等方法.

⑸ java中類裝載在什麼時候進行

java的類載入後且當使用階段完成之後,java類就進入了卸載階段,也就是所謂的釋放。
使用階段包括主動引用和被動引用,主動飲用會引起類的初始化,而被動引用不會引起類的初始化。
一個java類的完整的生命周期會經歷載入、連接、初始化、使用、和卸載五個階段,當然也有在載入或者連接之後沒有被初始化就直接被使用的情況,如圖所示:

PS:關於類的卸載,在類使用完之後,如果滿足下面的情況,類就會被卸載:
該類所有的實例都已經被回收,也就是java堆中不存在該類的任何實例。
載入該類的ClassLoader已經被回收。
該類對應的java.lang.Class對象沒有任何地方被引用,無法在任何地方通過反射訪問該類的方法。
如果以上三個條件全部滿足,jvm就會在方法區垃圾回收的時候對類進行卸載,類的卸載過程其實就是在方法區中清空類信息,java類的整個生命周期就結束了。

⑹ Java中類載入出現在哪個階段,編譯期和運行期 類載入和類裝載是一樣的嗎

使用的類,編譯/運行時都會被載入。

載入/裝載沒有區別,翻譯的詞彙選擇因人而異了

運行 javac /java 時 加上 -verbose 選項就可以看到了。

⑺ 什麼是類的載入何時載入

當程序主動使用某個類時,如果該類還未被載入到內存中,系統會通過載入,連接,初始化三個步驟來對該類進行初始化,JVM將會連續完成這三個步驟,也把這三個步驟統稱為類載入或類初始化。

類載入指的是將類Class文件讀入內存,並為之創建一個java.lang.Class對象,也就是說程序使用任何類時,系統都會為之建立一個java.lang.Class對象。

類是某一類對象的抽象,類是概念層次的東西,但類也是一種對象,每個類是一批具有相同特徵的對象的抽象,而系統中所有類,它們實際上也是對象,都是java.lang.Class的實例。

類的載入由類載入器完成,類載入器通常由JVM提供,這些類載入器也是所有程序運行的基礎,JVM提供的這些類載入器通常被稱為系統類載入器,開發者也可以通過繼承ClassLoader基類來創建自己的類載入器。

通過使用不同的類載入器,可以從不同來源載入類的二進制數據,通常有如下幾種來源:1.從本地文件系統來載入Class文件,這是大部分實常式序的類載入方式。

2從jar包中載入class文件,如JDBC編程時用到的資料庫驅動類就是放在jar文件中,JVM可以從jar文件中直接載入該Class文件。

3.通過網路載入class文件。

4.把一個java源文件動態編譯,並執行載入。

⑻ java 類載入先後順序

1.父類靜態代碼塊;
2.子類靜態代碼塊;
3.父類非靜態代碼塊;
4.父類構造函數;
5.子類非靜態代碼塊;
6.子類構造函數;

舉例:
public class ExA {
static {
System.out.println("父類靜態代碼塊。");
}
public ExA() {
System.out.println("父類構造函數。");
}
{
System.out.println("父類非靜態代碼塊。");
}

public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
static {
System.out.println("子類靜態代碼塊。");
}
{
System.out.println("子類非靜態代碼塊。");
}
public ExB() {
System.out.println("子類構造函數。");
}
}
執行結果:父類靜態代碼塊。子類靜態代碼塊。父類非靜態代碼塊。父類構造函數。子類非靜態代碼塊。子類構造函數。

⑼ java類載入順序

記住 3 條原則:
1、父類優先於子類
2、屬性優先於代碼塊優先於構造方法
3、靜態優先於非靜態
因此,類載入順序為:
父類靜態變數->父類靜態語句塊->子類靜態變數->子類靜態語句塊->父類普通成員變數->父類動態語句塊->父類構造器->子類普通成員變數->子類動態語句塊->子類構造器

閱讀全文

與java類什麼時候載入相關的資料

熱點內容
解放壓縮機支架 瀏覽:255
程序員禿頂搞笑相遇 瀏覽:6
IBM手機app商店叫什麼名字 瀏覽:834
jpeg壓縮質量 瀏覽:774
雲伺服器評測對比 瀏覽:145
java日期轉string 瀏覽:221
openfire源碼編譯 瀏覽:897
在線小工具箱引流網站源碼 瀏覽:337
非科班程序員自學 瀏覽:799
壓縮泡沫鞋底底材 瀏覽:219
程序員職場第一課2正確的溝通 瀏覽:679
遇到不合法app應該怎麼辦 瀏覽:90
匯編程序編譯後的文件 瀏覽:79
大智慧均線源碼 瀏覽:373
單片機排阻的作用 瀏覽:215
滴滴金融app被下架如何還款 瀏覽:212
jpg轉換成pdf免費軟體 瀏覽:743
范里安pdf 瀏覽:447
偽造pdf 瀏覽:79
能刪除android文件夾嗎 瀏覽:447