JAVA靜態數據的初始化;


①:Java首次會自動對變量進行初始化,其順序優於構造器;

②:如果一個域是靜態的的基本類型域,且也沒有對它進行初始化,那么它就會獲得基本類型的標准初值,如果它是一個對象引用,那么他的默認初始化值為null;

③:Java在執行一個類時,會沖main方法入口開始,在執行main()之前,需要加載包含main()方法的類,此時編譯器會先對該類的變量進行初始化,靜態的優與非靜態的,如果只基本類型直接初始化,如果是應用類型,則對靜態的引用進行初始化,

比如:

class A{

public static void main(){

      print("dddddddddd");

}

static  Table=new Table();

}

class Table {

static Bow bow1=new Bow();

Table(){

 printf("table初始化");

}

static Bow bow2=new Bow();

}

類似上面的代碼,在執行main()函數之前會先執行main函數后面的一條靜態語句,在執行靜態語句時,會調用相應的Table的類,在執行Table的構造器之前會對Table類中的靜態語句進行初始化,執行完Table構造器之后的靜態語句之后再執行Table的構造器(

   靜態的對象只會被初始化一次,如果第二次牽扯到靜態的域時,程序不會對它進行二次初始化)

總結:①構造器可以看成是靜態的

       ②:初始化的順序是先靜態對象,然后非靜態,

     ③:對象的創建過程:1):當創建一個對象時,Java解釋器會先定位到該對象的.class文件;2)加載該.class文件,該過程會對有關靜態初始化的操作會被完成(也就是說只在被加載時進行一次)。

                                  3):在內存中開辟一個空間用於放置這個對象,並對基本的變量進行初始化(基本類型的初始化為初始值,引用對象初始化為null),

                                  4) : 執行完所有的變量初始化后,就開始執行構造器方法:

  詳細內容可以參見 《Java 編程思想——p95--p96》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM