java初始化對象
A. 簡述java程序運行時完整的對象初始化過程
理解的幾個特殊載入過程:
靜態代碼塊、構造代碼塊,構造方法。
1、有靜態方法先載入,所有的靜態方法載入完畢之後進入對象的構建---> 初始化行為1
1、執行構造代碼塊(有的話:{ })---> 初始化行為2
2、調用無參構造函數初始化對象--->
執行第一行:super();
調用父類無參數構造函數---一直往上調。如果父類有構造代碼塊先執行。
注意靜態代碼是最先載入的,無論多少個父類。
自己多試著操作練習,看看運行結果,加深理解!
B. java里對象的初始化有什麼作用,什麼時候要用到
這個題目我個人感覺有一層讓大家了解程序載入流程的目的。
當這個類被載入的時候是先載入構造函數所以
一上來在沒有執行main方法之前,
1、執行構造函數count1++;count2++;
使count1等於1;count2等於1;
2、執行賦值(走類初始化,第3、4條賦值語句)
由於count1;則不用賦值,則count1不變等於1;而count2被賦值count2=0
則
count2等於0
3、使用直接調用,即靜態的,那麼值就變成了
count1等於1
count2等於0
4、使用new
那麼將再走一次構造函數且由於它們是靜態的,count1++;count2++;
使count1等於2;count2等於1;
此時不會再賦值也就是不走第3、4條賦值語句,直接等於構造後的值count1等於2;count2等於1;
C. JAVA中怎麼初始化對象數組
你這個試試對對象數組的一個聲明,並沒有示例話,所以會報空指針異常
這個數組對象都是現用現初始化的
Animals [] an=new Animals[5];//這只是個對象類型數組的聲明
用的時候需要
for(int i=0;i<5;i++)
an[i]=new Animals();
這樣你明白了吧
你前面的那個光聲明了數組,但是沒有調用Animals的構造函數,你數組里的每個元素都是一個對象,使用前必須要先實例化
如果你只是用戶輸入長度,
Animals [] an=new Animals[n];
聲明時是可以用變數的
或者你直接Animals [] an=new Animals[100];定義一個大數組,要用的時候再new Animals();實例化,或者用LinkedList<Animals> an=new LinkedList<Animals>();定義一個動態數組
D. java里對象的初始化有什麼作用,什麼時候
list=new ArrayList<String>();//這樣就將其初始化了。然後你可以調用它的方法如:list.add("dsafs");//正確的調用方法。
如果沒有上述的初始化,list.add("dsafs");//運行這句話時將要產生NullPointerException(空指針)異常。
基本類型數據用著全局變數,聲明後如果不初始化的話,java虛擬機將自動對其初始化,比如你在類的成員變數中聲明:int age;//這里沒有初始化,將產生默認值0;其他基本類型數據都有其默認值。但如果是聲明局部變數,比如說在某個方法中,就必須先初始化再調用,如: void add(){
int a;
System.out.println(a);//這樣編譯時不能通過,必須要求你先初始化
}
E. java語言為什麼要對對象初始化呢
1、這是一個規定,因為所有的對象,變數初始值都為null
2、如果不初始化,那麼程序是無法用null型做邏輯操作的,會報異常或者錯誤
3、因此要對對象初始化