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 } }
可见上述的程序运行状况取决于成员变量的初始化顺序,若是上面调用下面的成员变量向前引用
就会发出警告。变量