亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java中類加載過程全面解析

2024-07-13 10:13:42
字體:
來源:轉載
供稿:網友

類文件加載的順序

1、先加載執行父類的靜態變量及靜態初始化塊(執行先后順序按排列的先后順序)

2、再加載執行本類的靜態變量及靜態初始化塊

只要類沒有被銷毀,靜態變量及靜態初始化塊只會執行1次,后續再對該類進行其他操作也不會再執行這兩個步驟。

類實例創建過程

只有在調用new方法時才會創建類的實例

1、按照上面類文件加載的順序(類已被加載則跳過此步)

2、父類的非靜態變量及非靜態初始化塊

3、父類的構造方法

4、本類的非靜態變量及非靜態初始化塊

5、本類的構造方法

4、類實例銷毀時候,首先銷毀子類部分,再銷毀父類部分

靜態方法和非靜態方法都是被動調用

即系統不會自動調用執行。所以用戶沒有調用時都不執行,主要區別在于靜態方法可以直接用類名直接調用(實例化對象也可以),而非靜態方法只能先實例化對象后才能調用。

相關概念

static關鍵字:

是一個修飾符,用于修飾成員(成員變量和成員函數)

被修飾后的成員具備以下特點:

隨著類的加載而加載(類一加載,靜態數據就立即在內存中加載空間)

隨著類的消失而消失,說明它的生命周期最長

優先于對象存在(對象消失了,static還在)

靜態先存在,對象后存在

被所有對象所共享

節約內存空間

當成員被靜態修飾后,除了可以被對象調用外,還可以直接被類名調用

寫法:類名.靜態成員

使用注意

靜態方法只能訪問靜態成員(方法和變量)

非靜態方法既可以訪問靜態也可以訪問非靜態

靜態方法中不可以寫this,super關鍵字

因為靜態優先于對象存在,所以靜態方法中不可以出現this

主函數是靜態的

publicstaticvoidmain(String[]args){}

何時使用靜態?

要從兩方面下手:因為靜態修飾的內容有成員變量和函數。

何時定義靜態變量(類變量)

當對象中出現共享數據時,該數據被靜態所修飾。對象中的特有數據要定義成非靜態存在于堆內存中。

何時定義靜態函數

當功能內部沒有訪問到非靜態數據(對象特有數據),該功能可以定義成靜態。

靜態利弊

利:

1、對對象的共享數據單獨空間的存儲,節省空間。沒有必要每個對象都存儲一份。

2、可以直接被類名調用

弊:

1、生命周期過長

2、訪問出現局限性(只能訪問靜態)

內存結構

Java程序在運行時,需要在內存中的分配空間。為了提高運算效率,有對空間進行了不同區域的劃分,因為每一片區域都有特定的處理數據方式和內存管理方式。

棧內存

用于存儲局部變量當數據使用完,所占空間會自動釋放

堆內存

數組和對象(實體),通過new建立的實例都存放在堆內存中(成員變量隨著對象的建立而建立,存在于對象所在的堆內存中)每一個實體都有內存地址值(變量通過地址引用)實體中的變量都有默認初始化值實體不再被使用,會在不確定的時間內被垃圾回收器回收(垃圾回收機制)

方法區,本地方法區,寄存器

驗證

 

加載順序 父類靜態變量=1 父類非靜態變量=1 子類靜態變量=1 子類非靜態變量=1
【父類調用父類靜態方法】 Parent.pStaticMethod();      
父類靜態初始化塊一 2      
父類靜態初始化塊二 3      
父類靜態方法 4      
【子類調用子類靜態方法】 Child.cStaticMethod();      
子類靜態初始化塊一 5   2  
子類靜態初始化塊二 6   3  
子類靜態方法 7   4  
【子類實例化】 Child c=new Child();      
父類非靜態初始化塊一 8 2    
父類非靜態初始化塊二 9 3    
父類構造方法 10 4    
子類非靜態初始化塊一 11 5 5 2
子類非靜態初始化塊二 12 6 6 3
子類構造方法 13 7 7 4
【父類實例化子類對象】 Parent p=new Child();      
父類非靜態初始化塊一 14 2    
父類非靜態初始化塊二 15 3    
父類構造方法 16 4    
子類非靜態初始化塊一 17 5 8 2
子類非靜態初始化塊二 18 6 9 3
子類構造方法 19 7 10 4
加載順序 父類靜態變量=1 父類非靜態變量=1 子類靜態變量=1 子類非靜態變量=1
【子類實例化】 Child c=new Child();      
父類靜態初始化塊一 2      
父類靜態初始化塊二 3      
子類靜態初始化塊一 4   2  
子類靜態初始化塊二 5   3  
父類非靜態初始化塊一 6 2    
父類非靜態初始化塊二 7 3    
父類構造方法 8 4    
子類非靜態初始化塊一 9 5 4 2
子類非靜態初始化塊二 10 6 5 3
子類構造方法 11 7 6 4
【父類實例化子類對象】 Parent p=new Child();      
父類非靜態初始化塊一 12 2    
父類非靜態初始化塊二 13 3    
父類構造方法 14 4    
子類非靜態初始化塊一 15 5 7 2
子類非靜態初始化塊二 16 6 8 3
子類構造方法 17 7 9 4
【父類調用父類靜態方法】 Parent.pStaticMethod();      
父類靜態方法 18      
【子類調用子類靜態方法】 Child.cStaticMethod();      
子類靜態方法 19   10  

 

javascript/45385.html">java;">public class ClassTest {    public static void main (String args[]) {    System.out.println("【子類實例化】|Child c=new Child();");       Child c=new Child();    System.out.println("【父類實例化子類對象】|Parent p=new Child();");        Parent p=new Child();    System.out.println("【父類調用父類靜態方法】|Parent.pStaticMethod();");    Parent.pStaticMethod();    System.out.println("【子類調用子類靜態方法】|Child.cStaticMethod();");    Child.cStaticMethod();  }}
public class ClassTest2 {    public static void main (String args[]) {    System.out.println("【父類調用父類靜態方法】|Parent.pStaticMethod();");    Parent.pStaticMethod();    System.out.println("【子類調用子類靜態方法】|Child.cStaticMethod();");    Child.cStaticMethod();    System.out.println("【子類實例化】|Child c=new Child();");       Child c=new Child();    System.out.println("【父類實例化子類對象】|Parent p=new Child();");        Parent p=new Child();  }}
public class Parent {  // 父類靜態變量  static int m = 1;    // 父類非靜態變量  int n = 1;   // 靜態語句塊1  static {    m++;    // j++; 父類非靜態變量不能在靜態語句塊中使用    System.out.println("父類靜態初始化塊一|" + m);  }  // 靜態語句塊2  static {    m++;    System.out.println("父類靜態初始化塊二|" + m);  }   // 構造函數  public Parent() {    m++;    n++;    System.out.println("父類構造方法|" + m + "|" + n);  }   // 非靜態語句塊  {    m++;    n++;    System.out.println("父類非靜態初始化塊一|" + m + "|" + n);  }   // 非靜態語句塊  {    m++;    n++;    System.out.println("父類非靜態初始化塊二|" + m + "|" + n);  }   // 非靜態方法  public void pMethod() {    m++;    n++;    System.out.println("父類非靜態方法|" + m + "|" + n);    return;  }   // 靜態方法  public static void pStaticMethod() {    m++;//   j++; 父類非靜態變量不能在靜態方法中使用    System.out.println("父類靜態方法|" + m);    return;  }   @Override  protected void finalize() throws Throwable {    super.finalize();    System.out.println("銷毀父類|");  }}
public class Child extends Parent {  // 靜態變量  static int i = 1;  // 非靜態變量  int j = 1;   // 靜態語句塊1  static {    m++;    i++;    // j++; 非靜態變量不能在靜態語句塊中使用    System.out.println("子類靜態初始化塊一 " + "|" + m + "||" + i);  }  // 靜態語句塊2  static {    m++;    i++;    System.out.println("子類靜態初始化塊二 " + "|" + m + "||" + i);  }   // 構造函數  public Child() {    m++;    n++;    i++;    j++;    System.out.println("子類構造方法 " + "|" + m + "|" + n + "|" + i + "|" + j);  }   // 非靜態語句塊  {    m++;    n++;    i++;    j++;    System.out.println("子類非靜態初始化塊一" + "|" + m + "|" + n + "|" + i + "|" + j);  }  // 非靜態語句塊  {    m++;    n++;    i++;    j++;    System.out.println("子類非靜態初始化塊二" + "|" + m + "|" + n + "|" + i + "|" + j);  }   // 非靜態方法  public void pMethod() {    m++;    n++;    i++;    j++;    System.out.println("子類繼承非靜態方法" + "|" + m + "|" + n + "|" + i + "|" + j);    return;  }   // 靜態方法  public static void pStaticMethod() {// 靜態方法不能被繼承    m++;    i++;    // j++; 非靜態變量不能在靜態方法中使用    return;  }   // 非靜態方法  public void cMethod() {    m++;    n++;    i++;    j++;    System.out.println("子類非靜態方法" + "|" + m + "|" + n + "|" + i + "|" + j);    return;  }   // 靜態方法  public static void cStaticMethod() {    m++;    i++;    // j++; 非靜態變量不能在靜態方法中使用    System.out.println("子類靜態方法 " + "|" + m + "||" + i);    return;  }   @Override  protected void finalize() throws Throwable {    super.finalize();    System.out.println("銷毀子類|");  }}

總結

以上就是本文關于Java中類加載過程全面解析的全部內容,希望對大家有所幫助。如有問題可以隨時留言,小編會及時回復大家的。期待您的寶貴意見。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲视频一区二区| 久久久久久欧美| 992tv在线成人免费观看| 精品香蕉在线观看视频一| 欧美床上激情在线观看| 精品一区二区亚洲| 久久久久久成人| 亚洲天堂av图片| 久久精品国产v日韩v亚洲| 91精品国产91久久久久久最新| 欧美极品美女视频网站在线观看免费| 国产精品一区=区| 17婷婷久久www| 国产精品三级久久久久久电影| 92版电视剧仙鹤神针在线观看| 中文国产亚洲喷潮| 性日韩欧美在线视频| 久久国产一区二区三区| 91香蕉亚洲精品| 欧美另类暴力丝袜| 国产精品九九久久久久久久| 2019中文字幕在线| 日韩高清免费观看| 欧美老女人xx| 茄子视频成人在线| 亚洲精品久久久久久久久久久| 国产精品美乳在线观看| 欧美日韩亚洲视频一区| 成人免费福利视频| 一区二区日韩精品| 欧美日韩福利在线观看| 亚洲成人av片在线观看| 国产精品久久久久一区二区| 亚洲欧美三级伦理| 久久影视电视剧免费网站清宫辞电视| 亚洲第一级黄色片| 日韩欧中文字幕| 久久精视频免费在线久久完整在线看| 欧美性在线视频| 国产欧美日韩中文| 亚洲女人天堂视频| 26uuu另类亚洲欧美日本一| 亚洲国产中文字幕久久网| 国产精品久久久久久久久久ktv| 国产一区二区欧美日韩| 北条麻妃在线一区二区| 亚洲自拍偷拍色片视频| 成人午夜在线影院| 欧美国产在线视频| 亚洲影院色在线观看免费| 国产精品高清在线观看| 91综合免费在线| 国产精品www| 国产美女高潮久久白浆| 精品国产美女在线| 国产精品丝袜久久久久久不卡| 日韩精品免费一线在线观看| 亚洲嫩模很污视频| 欧美大片免费观看在线观看网站推荐| 国模精品视频一区二区| 成人国产精品色哟哟| 色噜噜狠狠狠综合曰曰曰| 欧美日韩一区二区在线播放| 视频直播国产精品| 91免费视频网站| 久久手机精品视频| 国产精品视频网址| 久久精品中文字幕免费mv| 美日韩精品视频免费看| 亚洲欧美色图片| 不用播放器成人网| 综合欧美国产视频二区| 欧美激情免费观看| 97香蕉久久夜色精品国产| 欧美精品久久久久久久免费观看| 亚洲视频自拍偷拍| 久久久免费观看| 91精品久久久久久久久久久久久| 亚洲视频电影图片偷拍一区| 国产精品老女人视频| 国产精品自产拍在线观| 成人av色在线观看| 欧美激情极品视频| 欧美成人黄色小视频| 色偷偷av一区二区三区乱| 91久久精品在线| 97在线观看视频国产| 国产精品久久久久一区二区| 最新国产成人av网站网址麻豆| 九九热在线精品视频| 日韩美女在线播放| 91国产一区在线| 综合136福利视频在线| 欧美成人激情在线| 国产美女搞久久| 国产日产欧美精品| 精品国产乱码久久久久久婷婷| 欧美电影在线观看高清| 日本人成精品视频在线| 国产精品网站大全| 69视频在线免费观看| 日韩av电影在线网| 成人激情视频在线观看| 97超级碰在线看视频免费在线看| 日本免费在线精品| 一本大道久久加勒比香蕉| 97香蕉超级碰碰久久免费的优势| 91豆花精品一区| 欧美精品在线极品| 日韩av网址在线| 欧美另类高清videos| 欧美性猛交丰臀xxxxx网站| 日韩性xxxx爱| 国产精品香蕉av| 国产成人亚洲综合青青| 亚洲一区二区久久久久久| 日本伊人精品一区二区三区介绍| 国外成人性视频| 欧美日韩国产限制| 欧美亚洲在线观看| 国产精品自拍偷拍| 91成人精品网站| 一道本无吗dⅴd在线播放一区| 国产精品91一区| 欧美成人精品影院| 亚洲欧美一区二区激情| 麻豆一区二区在线观看| 欧美在线精品免播放器视频| 麻豆乱码国产一区二区三区| 日韩在线欧美在线国产在线| 亚洲一区二区三| 亚洲国产天堂久久综合| 久久久久日韩精品久久久男男| 日韩在线免费视频观看| 日韩精品中文字幕在线观看| 国产精品久久久久久久久久99| www.日韩欧美| 日韩av免费网站| 国产在线久久久| 欧美一级电影在线| 国产精品入口免费视| 亚洲精品第一页| 色婷婷久久一区二区| 黑人狂躁日本妞一区二区三区| 97香蕉超级碰碰久久免费软件| 国产亚洲人成a一在线v站| 日韩av影片在线观看| 国产成人精品免高潮在线观看| 青青久久aⅴ北条麻妃| 91精品国产自产在线老师啪| 日韩专区中文字幕| 久色乳综合思思在线视频| 国产精品黄页免费高清在线观看| 亚洲精品美女在线观看播放| 国产精品久久久久久久电影| 国产一区香蕉久久| 北条麻妃一区二区在线观看| 欧美精品久久久久久久久久| 在线视频国产日韩| 久久精品一区中文字幕| 久久精品夜夜夜夜夜久久| 精品综合久久久久久97| 中文字幕在线精品| 久久精视频免费在线久久完整在线看|