看到一个题解,发现int[] a = new int[10];没有赋初值就直接用了,因为印象中局部变量没有默认值的。。。。
boolean:false
byte:0
short:0
char:
int:0
long:0
float:0.0
double:0.0
String:null
String[]:null
package deep; public class CharDefaultValue { static char c; public static void main(String[] args) { System.out.println((int) c); System.out.println(c == '\u0000'); } } //---------------------测试结果 0 true
public static void main(String[] args) { int value; System.out.println(value); }
错误提示:
The local variable value may not have been initialized
public static void main(String[] args) { int[] value = new int[10]; System.out.println(value[0]); } //结果:0 0 0 0 0 0 0 0 0 0
可以把数组的元素看作是
数组的成员变量(实际上不是)
,当数组分配空间
时,数组的元素(行为类似于成员变量)就可以获得默认的初始值
。不过,对于局部变量数组本身(即value),如果没有初始化,同样没有默认值。
(如下)String[] a = new String[10];//有 int[] b;//不new的话还是没有!!!!会直接报错 for( String i : a ) System.out.print( i + " " ); for( int i : b ) System.out.println(i + " " );
- 错误:
参考