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會按上表為其新增預設值;方法裡定義的資料成員稱為變數,變數在參與運算之前必須賦初值。