日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 类 加载 初始化_java中类的初始化和加载

發布時間:2025/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 类 加载 初始化_java中类的初始化和加载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在閱讀孫衛琴的java面向對象一書中,看到對java中類的初始化和加載中的論述比較系統,故筆記之

1)類的初始化,JAVA在初始化一個類時,以下步驟

A 假如類存在直接的父類,并且這個父類還沒有初始化,則先初始化直接的父類

B? 假如類存在初始化的語句,那么直接執行這些初始化語句

比如

package init;

class Base{

static int a=1;

static{

System.out.println("init Base");

}

}

class Sub extends Base{

static int b=1;

static{

System.out.println("init Sub");

}

}

public class InitTester{

static{System.out.println("init InitTester");}

/*

public static void main(String args[]){

System.out.println("b="+Sub.b);? //執行這行代碼時,先依次初始化Base類和Sub類

}

*/

輸出:

init InitTester

init Base

init Sub

b=1

假如換成下面這樣

public static void main(String args[]){

Base base;? //不會初始化Base類

System.out.println("After defining base");

base=new Base();? //執行這行代碼時,初始化Base類

System.out.println("After creating an object of Base");

System.out.println("a="+base.a);

System.out.println("b="+Sub.b);? //執行這行代碼時,僅僅初始化Sub類

}

}

輸出

init InitTester

After defining base

init? Base

After creating an object of Base

a=1

init Sub

b=1

2) 類的初始化時機

A 對于final類型的,如果在編譯時就能計算出變量的值,則不會導致類的初始化,如下

class Tester {

public static final int a=2*3;

static? {

System.out.println("hello");?? ..............

}

}

public class Sample

{

public static void main(String args[])

{? System.out.println("a="+Tester.a);

}

}

2)? package initbase;

class Base{? static int a=1;? static{??? System.out.println("init Base");? }? static void method(){??? System.out.println("method of Base");? }}class Sub extends Base{? static{??? System.out.println("init Sub");? }}public class Sample{? public static void main(String args[]){??? System.out.println("a="+Sub.a);? //僅僅初始化Base類??? Sub.method();? ? }}由于靜態變量a和靜態方法method()在 base父類中定義,所以僅初始化Base類,沒初始化SUB類打印結果為init Basea=1method of Base這樣的話,如果在調用Tester.a時,不會輸出hello,

總結

以上是生活随笔為你收集整理的java 类 加载 初始化_java中类的初始化和加载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。