
Java变量的默认值和初始化
学习自
- 《Thinking In Java》
- 技术小黑屋-为什么局部变量需要显式设置初始化值
变量的默认值
注意只有成员变量才有默认值,而局部变量必须要赋初值。为什么会这么设计,下面会讨论。
关于各种基础类型的默认值,大家肯定都耳熟能详了,这里就不在叨叨,详见下表:
类型 | 值 |
---|---|
Int | 0 |
Long | 0 |
Boolean | false |
float | 0.0 |
double | 0.0 |
char | /u0000(NULL) |
String | NULl |
Object(代表所有的类) | NULL |
数组(未初始化) | NULL |
数组(已初始化) | 数组各个元素的值为,其类型的默认值 |
关于上表可以使用一下程序检测
public class Measurement {
int i;
long l;
boolean b;
float f;
double d;
char c;
String s;
Object o;
int[] ints;
public void printAll() {
System.out.println("Java各数据类型的初始值如下\n" +
"Int:" + i + "\n" +
"Long:" + l + "\n" +
"Boolean:" + b + "\n" +
"Float:" + f + "\n" +
"Double:" + d + "\n" +
"Char:" + c + "\n" +
"String:" + s + "\n" +
"Object:" + o + "\n" +
"Array:" + ints + "\n"
);
}
}
为什么有默认值
这个问题很好回答, 因为有些成员变量在初始的时候不知道赋什么初始的值