Java盡力保證全部變量能夠在使用前能夠初始化。java
void f(){ int i; System.out.println(i); //! i++; //開幕雷擊:這裏就報錯了,會告訴你變量 i 未初始化 } //Output: 0
這說明,數據成員在建立之初是有初始值的。但這並不表明java爲數據成員提供了默認值。code
直接賦值法it
int i = 0; char ch = 'a';
調用方法對數據成員賦值class
public class MethodInit1{ int i = f(); //調用方法對 i 賦值 int f() { return 11; } } public class MethodInit2{ int i = f(); int j = g(i); // i 變量已經被初始化能夠這樣作 int f(){ return 11; } int g(int n){ return n*5 } } public class MethodInit3{ int j = g(i); // i 變量還未被初始化會報錯 int i = f(); int f(){ return 11; } int g(int n){ return n*5 } }
可見上述的程序運行狀況取決於成員變量的初始化順序,若是上面調用下面的成員變量向前引用
就會發出警告。變量