新手問題:自動變量賦值?
我有兩個類:
class A {
public static void main(String...args){
B b = new B()
System.out.println(B.firstVar); // 0
}
}
class B {
public int firstVar;
}
爲什麼它打印0時,沒有值被分配到firstVar?
新手問題:自動變量賦值?
我有兩個類:
class A {
public static void main(String...args){
B b = new B()
System.out.println(B.firstVar); // 0
}
}
class B {
public int firstVar;
}
爲什麼它打印0時,沒有值被分配到firstVar?
第一件事有有兩種錯誤代碼
缺少一個分號:
B b = new B()
二是努力使用非靜態成員與類名
System.out.println(B.firstVar);
應該
System.out.println(b.firstVar);
回答你的問題:當一個構造函數被調用時初始化成員變量/到相應類型的默認值類的屬性。
Type Default Value (for fields) byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' String (or any object) null boolean false
這就是爲什麼即使沒有初始化它打印0
注:局部變量略有不同;編譯器從不將默認值分配給未初始化的局部變量。
這就是Java的initilializes變量的方法。 例如int值初始化0
與null
Object obj; // obj is null
int i; // i is 0
double d; //d is 0
對象當您沒有設置任何的變量,它被分配一個零默認情況下(在INT的情況下)
該整數的默認值爲0 – Sathesh
請注意,整數類型實例變量在C++和Java中均自動初始化爲0,而整型局部變量僅在Java中自動初始化 – mangusta
@mangusta沒有局部變量被自動初始化在java見鏈接http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – TheMohanAhuja