目录一、核心规则二、重点解析char 类型的默认值 \u00002.1 本质定义2.2 易混淆对比\u0000 vs 空格 vs 空字符串 2.3 代码验证char 默认值输出结果三、其他类型默认值代码验证输出结果四、关键注意事项五、总结一、核心规则重点char 判断技巧检查 char 是否为默认值需用c \u0000或c 0切勿用c 空格Java 中成员变量实例变量 / 静态变量由 JVM 自动初始化无需手动赋值即可使用而局部变量无默认值未赋值直接使用会编译报错。各类成员变量的默认值规则如下变量类型分类具体类型默认值补充说明数值型byte/short/int0整数型默认值均为 0数值型long0L后缀 L 表示长整型浮点数型float0.0f后缀 f 表示浮点型浮点数型double0.0d后缀 d 可省略字符型char\u0000或\0Unicode 空字符NUL数值 0布尔型booleanfalse只有 true/false 两种值引用类型String/Object/ 数组等null无指向任何对象的空引用二、重点解析char 类型的默认值\u00002.1 本质定义\u0000是Unicode 码位为 0 的空字符NUL属于不可打印的控制字符核心属性如下编码身份对应 ASCII 码的 NUL 控制字符Unicode 转义序列为\u0000简写为\0与 C 语言兼容数值本质十进制值为 0十六进制为 0x0000char 是 2 字节无符号类型默认值为 2 个字节的 0视觉表现无任何可见图形打印时 “看不见”但占 1 个字符位置。2.2 易混淆对比\u0000vs 空格 vs 空字符串字符 / 字符串写法十进制值长度类型视觉效果核心区别char 默认值\u0000/\001char不可见空位控制字符无实际语义空格 321char可见空白间隔可打印字符用于分隔内容空字符串-0String无字符引用类型非 char 类型2.3 代码验证char 默认值public class CharDefaultValueDemo { // 成员变量自动赋值为 \u0000 static char defaultChar; public static void main(String[] args) { char spaceChar ; // 手动赋值空格 String emptyStr ; // 空字符串 // 1. 数值验证 System.out.println(char 默认值的十进制值 (int) defaultChar); // 输出 0 System.out.println(空格的十进制值 (int) spaceChar); // 输出 32 // 2. 相等性判断 System.out.println(defaultChar 空格 (defaultChar spaceChar)); // false // 3. 视觉对比用星号包裹 System.out.println(* defaultChar *); // 输出 **中间无可见字符 System.out.println(* spaceChar *); // 输出 * *中间有空格 // 4. 长度验证 System.out.println(\\u0000 长度 \u0000.length()); // 输出 1 System.out.println(空字符串长度 emptyStr.length()); // 输出 0 } }输出结果char 默认值的十进制值0空格的十进制值32defaultChar 空格false** * *\u0000 长度1空字符串长度0三、其他类型默认值代码验证public class AllDefaultValueDemo { // 数值型 byte defaultByte; short defaultShort; int defaultInt; long defaultLong; float defaultFloat; double defaultDouble; // 字符型 char defaultChar; // 布尔型 boolean defaultBoolean; // 引用类型 String defaultString; Object defaultObject; int[] defaultArray; public static void main(String[] args) { AllDefaultValueDemo demo new AllDefaultValueDemo(); // 数值型默认值 System.out.println(byte 默认值 demo.defaultByte); // 0 System.out.println(int 默认值 demo.defaultInt); // 0 System.out.println(long 默认值 demo.defaultLong); // 0 System.out.println(float 默认值 demo.defaultFloat); // 0.0 System.out.println(double 默认值 demo.defaultDouble); // 0.0 // 字符型默认值 System.out.println(char 默认值数值 (int) demo.defaultChar); // 0 // 布尔型默认值 System.out.println(boolean 默认值 demo.defaultBoolean); // false // 引用类型默认值 System.out.println(String 默认值 demo.defaultString); // null System.out.println(Object 默认值 demo.defaultObject); // null System.out.println(数组 默认值 demo.defaultArray); // null } }输出结果byte 默认值0int 默认值0long 默认值0float 默认值0.0double 默认值0.0char 默认值数值0boolean 默认值falseString 默认值nullObject 默认值null数组 默认值null四、关键注意事项作用范围默认值规则仅适用于成员变量类级别方法内的局部变量无默认值未赋值直接使用会编译报错char 判断技巧检查 char 是否为默认值需用c \u0000或c 0切勿用c 空格引用类型注意String 作为引用类型默认值是null无对象而非空字符串有对象但无字符浮点型后缀float 默认值0.0f、long 默认值0L的后缀是类型标识省略可能导致类型不匹配。五、总结Java 成员变量默认值是 JVM 自动赋值的结果局部变量无此特性char 类型默认值\u0000是数值为 0 的不可打印控制字符与空格 数值 32本质不同数值型默认值为 0浮点型为 0.0布尔型为 false所有引用类型均为 null实际开发中判断 char 默认值、区分 null / 空字符串是高频避坑点。