java se 類的載入過程

2021-06-09 20:42:47 字數 1086 閱讀 1146

一.首先看乙個程式:

public class test1

}class singleton

public static singleton getsingleton()

分析:當程式執行到  singleton s = singleton.getsingleton();時   singleton類中的靜態成員被載入到了記憶體中,首先進行預設的初始化counter=0  counter2=0;

然後靜態變數進行賦值,counter1=0,counter2=50;此刻類的靜態變數載入完畢了。又有new singleton()後,載入非靜態成員,呼叫建構函式,

counter1=100;   counter2=100;

二、再看乙個程式:

public class test1

}class singleton

public static singleton getsingleton()

}分析:當singleton s = singleton.getsingleton();後類singleton中的靜態成員被載入了,就是singleton=null  counter1=0,counter2=0   然後就是順序賦值,

singleton=new singleton()此時構造器賦值counter=100,counter2=100;然後counter1沒有賦值 counter2賦值了counter2=50;因此:counter1=100;

counter2=50;

類的載入順序:

分兩種:

一、當第一次呼叫乙個雷的靜態方法時:

1.載入類的靜態成員(即靜態成員變數和靜態方法)到記憶體中的方法區,並初始化。如果靜態變數後有賦值語句,再為靜態成員變數賦值。類中的靜態靜態變數只需載入一次,並且是全域性共享的。

2.此時的非靜態成員沒有分配記憶體。。。。

二、當第一次new乙個類的例項:

1.載入類的靜態成員(即靜態成員變數和靜態方法)到記憶體中的方法區,並初始化。如果靜態變數後有賦值語句,再為靜態成員變數賦值。類中的靜態靜態變數只需載入一次,並且是全域性共享的。

2.載入非靜態成員。

類的載入過程

類的載入過程 1 在建立物件時,會先判斷物件所屬的型別 類 在記憶體中是否存在,如果存在則直接使用 如果不存在,則把類載入到記憶體中的方法區下 2 在把類 class 載入到方法區時,分兩種情況 2.1 從.class檔案的上面向下依次載入內容 2.2 靜態的內容載入到方法區的靜態區域下 非靜態內容...

類的載入過程

person person new person 為例進行說明。1 因為new用到了person.class,所以會先找到person.class檔案,並載入到記憶體中 2 執行該類中的static 塊,如果有的話,給person.class類進行初始化 3 在堆記憶體中開闢空間分配記憶體位址 4 ...

類的載入過程

類的載入過程,可分為三個階段,載入 連線 初始化。初始化,為類的靜態變數賦予預設的初始值 jvm規範規定了以下六種主動使用類的場景 被動呼叫,不會導致類的載入和初始化 先看乙個面試題 public class singleton public static singleton getinstance...