一、成员变量/类变量 VS 局部变量
成员变量/类变量才有默认值,即如果不赋值,则使用默认值;(对象类变量如果不赋值直接引用,可能报运行时的空指针错误)
局部变量没有默认值,如果不赋值直接使用,则会有编译错误。(包括对象类的变量)
二、基本数据类型的默认值
boolean false
char '\u0000'
byte 0
short 0
int 0
long 0
float 0.0
double 0.0
三、对象类变量的默认值均为null
在如下操作中,由于均对null做了判断,并将其输出为null字符串,所以其输出值均为null字符串
Object obj; // 成员变量,非局部变量
System.out.println(obj);
String.valueOf(obj);
"" + obj; (利用到了StringBuilder.append()方法调用appendNull()进行转换)
四、new 出来的数组,数组中每个变量的值为其类型的默认值。
int [] intArr = new int[5]; // 数组中5个元素的值都为Int类型默认值0
float[] floatArr = new float[5]; // 数组中5个元素的值都为float类型默认值0.0
Object[] objArr = new float[5]; // 数组中5个元素的值都为null