最近我在测试程序时,发现在方法中声明的数组都会被默认初始化为对应基本变量的默认值,例如:
public void test(){
boolean[] flag = new boolean[5]; //运行时flag会被默认初始化为{false,false,false,false,false}
int[] nums = new int[5]; //运行时nums会被默认初始化为{0,0,0,0,0}
int i; //编译错误,i没有被初始化
}
flag、nums和i都是局部变量,为什么flag、nums可以被默认初始化,而局部变量却不行?
是不是对象会被默认初始化,而基本类型变量不会了?