我認爲java不會用四個值初始化a
。但是我錯了,你能解釋我是怎麼做到的嗎?我的意思是它在調用構造函數時的作用,因爲我沒有在構造函數中初始化a
。當對構造函數進行調用時會發生什麼(在這種情況下清晰的概念)?
class A {
int[] a = {1,2,3,4};
A() {
a[0] = 3;
}
}
class ClassTest1 {
public static void main(String args[]) {
A b = new A();
System.out.println("hey " + b.a[0]);
System.out.println("hey " + b.a[1]);
}
}
如果你詳細解釋一些外部資源並理解內部信息,對新手來說可能會更好。
http://stackoverflow.com/a/9665533/995891是一個有趣和相似的情況。這是關於Java – zapl
http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.5 – nachokk
@zapl的初始化順序感謝,有趣的討論..與「所有變量被初始化爲它們的默認值,然後顯式初始化程序和匿名塊按它們在源文件中找到的順序運行,最後調用構造函數。 http://stackoverflow.com/a/9665723/1579939 – netsmertia