Java基本数据类型默认值仅适用于成员变量:byte/short/int/long为0,float/double为0.0f/0.0d,char为'u0000',boolean为false;局部变量必须显式初始化,数组元素和包装类成员变量默认为对应类型的零值或null。

Java 基本数据类型默认值只对成员变量(类中直接定义的字段)生效,局部变量不享受该机制,必须显式初始化。测试的关键是把变量声明为类字段,再打印其值——不能在方法内仅声明不赋值就输出,否则编译失败。
八大基本类型的默认值清单
以下是标准默认值,全部适用于未初始化的成员变量:
-
byte、short、int、long → 0(
long默认是0L,但数值上等价) -
float、double → 0.0f 和 0.0d(注意不是整数
0) -
char → '\u0000'(Unicode 空字符,
(int)'\u0000'输出0,但System.out.println(c)不显示任何可见内容) - boolean → false
怎么安全测试默认值
写一个简单类,在 main 中直接访问静态或实例成员变量即可验证:
public class DefaultValueTest {
static boolean b;
static byte by;
static char c;
static int i;
static long l;
static float f;
static double d;
public static void main(String[] args) {
System.out.println("b = " + b); // false
System.out.println("by = " + by); // 0
System.out.println("c = '" + c + "'"); // ''(空引号,实际是 u0000)
System.out.println("(int)c = " + (int)c); // 0
System.out.println("i = " + i); // 0
System.out.println("l = " + l); // 0
System.out.println("f = " + f); // 0.0
System.out.println("d = " + d); // 0.0
}
}
运行后会清晰输出各默认值。注意:char 直接拼接打印会“消失”,建议转成 int 或用单引号包裹观察。
立即学习“Java免费学习笔记(深入)”;
数组元素也自动填默认值
只要执行了 new,无论数组是成员还是局部变量,元素都会按类型填充默认值:
-
int[] a = new int[2];→ 元素是{0, 0} -
boolean[] b = new boolean[1];→{false} -
char[] c = new char[1];→{'\u0000'} -
String[] s = new String[2];→ 元素是{null, null}(引用类型,不是空字符串)
仅声明 int[] arr; 不触发初始化,此时 arr 本身为 null。
包装类和引用类型默认是 null
Integer、Boolean、String 等是引用类型,它们的成员变量默认值是 null,不是对应基本类型的零值:
-
Integer x;→ 成员变量默认为null,不是0 -
int y = x;→ 运行时报NullPointerException(自动拆箱失败) -
Integer[] nums = new Integer[1];→ 元素是{null},不是{0}
测试时可打印 System.out.println(x),输出 null 即可确认。


















