Java費靜態變量的初始化分為兩種情況,一種是局部變量,一種是類的域。
對於類的域,java在類初始化時,會為變量賦一個初始值。對於基本數據類型,java會將初始值設置為二進制0,具體為將boolean設置為false,將byte設置為0,將char設置為0(即空格),short設置為0,int設置為0,long設置為0,float設置為0.0f,都變了設置為0.0。對於引用類型也會將其初始值設置為二進制0,即null。
而對於局部變量加入你在申明變量的時候沒有為其設置初始值,java將認為你這是個粗心導致的錯誤,所以java會給你一個編譯異常。
Talk is weak, show me your code.
package InitializationAndCleanup;
public class VariableInit {
private boolean mBoolean;
private byte mByte;
private short mShort;
private char mChar;
private int mInt;
private long mLong;
private float mFloat;
private double mDouble;
private VariableInit mInit;
public void function() {
int i;
//i ++; // compile error
}
public void printInitValue() {
System.out.println("boolean : " + mBoolean);
System.out.println("byte : " + mByte);
System.out.println("short : " + mShort);
System.out.println("char : [" + mChar + "]");
System.out.println("int : " + mInt);
System.out.println("long : " + mLong);
System.out.println("float : " + mFloat);
System.out.println("double : " + mDouble);
System.out.println("reference variable : " + mInit);
}
public static void main(String[] args) {
new VariableInit().printInitValue();
}
}
輸出:
boolean : false
byte : 0
short : 0
char : [ ]
int : 0
long : 0
float : 0.0
double : 0.0
reference variable : null