局部变量的初始值
在局部变量没有默认初始值。这意味着当你声明一个局部变量时,它必须在使用之前被显式地初始化。如果未初始化就尝试使用,编译器会报错提示“variable may not have been initialized”。
类成员的初始值
在Java中,类成员变量(也称为字段或实例变量)的初始值取决于其数据类型。Java为类成员变量提供了默认初始值,即使你没有显式地初始化它们。
- 基本数据类型
整数类型 (byte, short, int, long) 的默认初始值是 0。
浮点数类型 (float, double) 的默认初始值是 0.0。
布尔类型 (boolean) 的默认初始值是 false。
字符类型 (char) 的默认初始值是一个空字符 \u0000(等同于 (char)0)。 - 引用类型
对象引用 和 数组 的默认初始值是 null。
public class ExampleClass {
byte byteField; // 默认初始值 0
short shortField; // 默认初始值 0
int intField; // 默认初始值 0
long longField; // 默认初始值 0L
float floatField; // 默认初始值 0.0f
double doubleField; // 默认初始值 0.0d
boolean boolField; // 默认初始值 false
char charField; // 默认初始值 '\u0000'
ExampleClass otherObject; // 默认初始值 null
String stringField; // 默认初始值 null
int[] intArray; // 默认初始值 null
}
public class Test {
public static void main(String[] args) {
ExampleClass example = new ExampleClass();
System.out.println("Byt默认值: " + example.byteField);
System.out.println("Short默认值: " + example.shortField);
System.out.println("Int默认值: " + example.intField);
System.out.println("Long默认值: " + example.longField);
System.out.println("Float默认值: " + example.floatField);
System.out.println("Double默认值: " + example.doubleField);
System.out.println("Boolean默认值: " + example.boolField);
System.out.println("Char默认值: " + example.charField);
System.out.println("Object reference默认值: " + example.otherObject);
System.out.println("String默认值: " + example.stringField);
System.out.println("Integer array默认值: " + example.intArray);
}
}