1.類的初始化過程:
類的靜態成員在類被加載的時候進行初始化!!
數據成員初始化過程:
1)在堆中分配空間
2)給對性的屬性賦默認值
boolean=false
基本類型=0
引用類型=null
3)調用構造器
4)進一步賦值
2.main方法的執行過程
main中代碼:
Student stu=new Student();
stu.study();
1).先到方法區搜索Student。class對象(此對象它描述了Student類的方法特
徵及靜態成員等),如果搜索不到則去加載Student的字節碼文件;
2).通過classpath查找對應的Student字節碼文件,找不到就返回錯誤:
類找不到;
3).將字節碼文件的二進制數據轉換爲class對象放置於方法區,加載完成;
4).驗證字節碼文件;
5).在堆區劃分空間,放置Student對象;
6).在棧(stack)區放置引用類型變量stu,stu指向的Student對象的地址;
7).Student對象存放class對象的地址;
8).通過stu引用類型變量的值找到Student對象,通過Student對象存放
class對象的地址找到對應的study方法,然後執行;
9).釋放資源,JVM運行結束。
3.變量的作用域:
定義:變量生存的時間。
(1)變量的分類:
類的成員變量
①類的靜態成員變量
Example:Student類的帶static修飾的屬性
類的靜態成員變量的生命週期:
從類加載開始,到類被卸載結束。靜態成員初始化以後放在方法區。
②類的實例成員變量
Student類的不帶static修飾的屬性。
變量初始化以後放在堆區。
實例變量的生命週期:
A.從對象生成開始,到對象被回收時結束。
B.類的實例成員變量在對象初始化的時候,會賦默認值。
基本類型number type:0,Boolean:false,character type :'/u0000'
引用類型:null,如String
C.先按照B的規則賦給一個初始值,然後構造器的賦值過程會覆蓋掉初始值。
(2)局部變量
Definition:局部變量是方法或代碼塊中定義的變量。
JVM中的某個線程調用方法的時候,將局部變量壓入棧區開始,方法調用結束,(
局部變量從棧區(stack)彈出結束。
局部變量在使用前必須要賦值。
(3)方法的參數
例如:for(int i=0;i<10;i++),add(int i1,int i2)
(4)異常的參數
例如:try...catch(Exception e)