Java基本类型默认值仅在类成员变量中体现,局部变量必须显式初始化;成员变量默认值为:boolean false、char '\u0000'、数值类型0、浮点类型0.0;数组元素同样按类型默认初始化。

Java 中基本数据类型的默认初始化值只能在类成员变量(即字段)中体现,局部变量不会自动初始化,必须显式赋值才能使用。因此,测试默认值的关键是:把变量声明为类的成员,然后在方法中打印其值。
为什么局部变量不能直接测试默认值?
Java 编译器会拒绝编译未初始化的局部变量。例如:
int x;System.out.println(x); // 编译错误:可能尚未初始化
正确测试方式:用成员变量 + 实例化打印
在类中声明基本类型字段,不赋值,然后在构造方法或普通方法中输出它们的值:
- 定义一个空类,包含所有 8 种基本类型字段
- 在 main 方法中 new 一个实例
- 直接访问并打印这些字段(或通过 getter / 构造后打印)
示例代码:
立即学习“Java免费学习笔记(深入)”;
public class DefaultValueTest {
boolean b;
char c;
byte by;
short s;
int i;
long l;
float f;
double d;
public static void main(String[] args) {
DefaultValueTest t = new DefaultValueTest();
System.out.println("boolean: " + t.b); // false
System.out.println("char: " + t.c); // '\u0000'(空字符,打印为空白)
System.out.println("byte: " + t.by); // 0
System.out.println("short: " + t.s); // 0
System.out.println("int: " + t.i); // 0
System.out.println("long: " + t.l); // 0L
System.out.println("float: " + t.f); // 0.0f
System.out.println("double: " + t.d); // 0.0d
}
}
注意 char 的显示效果
char 默认值是 '\u0000'(Unicode 零值),不是空格 `' '`,也不是 null。它在控制台打印时不可见,但可以验证:
System.out.println(t.c == '\u0000'); // trueSystem.out.println((int)t.c); // 输出 0
数组元素也遵循相同规则
无论是基本类型数组还是引用类型数组,只要作为成员变量,其元素也会被默认初始化:
-
int[] arr = new int[3];→ 每个元素都是 0 -
boolean[] flags = new boolean[2];→ 每个元素都是 false -
String[] strs = new String[2];→ 每个元素都是 null


















