结论:
静态变量和成员变量的默认值是一样的基本数据类型: int = 0, long =0, float = 0.0, double = 0.0, boolean=false对象数据类型: 默认值都为null注意: char这个基本数据类型
char的默认字符是空, 类似于两个单引号中没有任何字符, 但是在代码中
是不能给字符串赋值为’’(如 char ch = ‘’), 如果这样写编译会报错, 因此我们就
不能通过 if(ch == ‘’) 这种形式判断, 这种形式同样会报错.
当我们想要判断char字符是不是被人为的赋值, 我们可以这样写:
if(aChar == 0){ System.out.println("成员变量char默认值为空");}else{ System.out.println("成员变量char默认值不为空");} 根据char是否为0进行判断:如果为true, 则char没有被人为赋值, 是系统的默认值
如果为false, 则char已经被人为赋值. 3.局部变量 public class LocalVar { public static void main(String[] args){ char aChar ; int anInt; long aLong; float aFloat; double aDouble; boolean aBoolean; String string; int[] ints; System.out.println("局部变量char默认值:"+aChar); System.out.println("局部变量int默认值:"+anInt); System.out.println("局部变量long默认值:"+aLong); System.out.println("局部变量float默认值:"+aFloat); System.out.println("局部变量double默认值:"+aDouble); System.out.println("局部变量boolean默认值:"+aBoolean); System.out.println("局部变量string默认值:"+string); System.out.println("局部变量ints默认值:"+ints); }} Error:(17, 43) java: 可能尚未初始化变量aCharError:(18, 42) java: 可能尚未初始化变量anIntError:(19, 43) java: 可能尚未初始化变量aLongError:(20, 44) java: 可能尚未初始化变量aFloatError:(21, 45) java: 可能尚未初始化变量aDoubleError:(22, 46) java: 可能尚未初始化变量aBooleanError:(23, 45) java: 可能尚未初始化变量stringError:(24, 43) java: 可能尚未初始化变量ints
结论:
局部变量系统默认不会给你默认值, 如果想要使用局部变量则必须进行初始化.注意: 局部变量的数组new了之后就又有默认值.
局部变量中的基本数组类型new之后的默认值和成员变量(也可以说是静态变量)的默认值是相同.(请看下图) public class LocalVar { public static void main(String[] args) { int[] ints; ints = new int[5]; for (int i = 0; i < 5; i++) { System.out.print(ints[i] + " "); } System.out.println(); float[] floats; floats = new float[5]; for (int i = 0; i < 5; i++) { System.out.print(floats[i] + " "); } System.out.println(); double[] doubles; doubles = new double[5]; for (int i = 0; i < 5; i++) { System.out.print(doubles[i] + " "); } System.out.println(); }} 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0