1. 程式人生 > >JAVA當中變數什麼時候需要初始化?

JAVA當中變數什麼時候需要初始化?

 預設值如下:
             Boolean      false
             Char           '\u0000'(null)
             byte            (byte)0
             short           (short)0
             int               0
             long            0L
             float            0.0f
             double        0.0d
2. 區域性變數宣告之後,Java虛擬機器就不會自動給它初始化為預設值,因此區域性變數的使用必須先經過顯式的初始化。


      但是需要宣告的是:對於只負責接收一個表示式的值的區域性變數可以不初始化,參與運算和直接輸出等其它情況的區域性變數需要初始化。

通過下面這個測試可以看到JVM對哪些資料初始化,哪寫資料不初始化:

public class TestStatic {
 static int x; //類的成員變數,JVM負責初始化
 static int method()
 {
    int y=0;  //此處必須自己初始化,它不屬於類成員變數,是個method的區域性變數,JVM不負責初始化

    return y;
 }
 public static void main(String[] args) {
     TestStatic as=new TestStatic();
     int z=0;  //此處必須自己初始化,它不屬於類成員變數,是個主函式裡的區域性變數,JVM不負責初始化


     int aa=3; //此處aa參與了運算,所以必須初始化
     aa=aa+2;
     int a=1,b=2,max; //max只是負責接收表示式的值,不需要初始化
     max=a>b?2:1; 
     System.out.println(max); //1
     System.out.println(aa); //5
     System.out.println("z="+z); //z=0
     System.out.println("x="+as.x); //x=0  

    System.out.println("y="+as.method()); //y=0
 }

總結為一句話便是:
 類裡定義的資料成員稱為屬性,屬性可不賦初值,若不賦初值則JAVA會按上表為其新增預設值;方法裡定義的資料成員稱為變數,變數在參與運算之前必須賦初值。