八大基本数据类型的默认值
boolean false
char '/uoooo'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
基本类型数组没有赋值也一样。
基本数据类型默认值和初始化问题
class TestClass {
static double double1;
double double2;
double[] double4;
public static void main(String[] args) {
double double3;
TestClass testClass = new TestClass();
System.out.println(double1);
System.out.println(testClass.double2);
System.out.println(double3);
System.out.println(testClass.double4[0]);
double[] booleans = new double[16];
System.out.println(booleans[0]);
}
}
报错
编译器会报如下错误
错误1
运行结果
Error:(100, 28) java: 可能尚未初始化变量double3
错误2
运行结果
Exception in thread "main" java.lang.NullPointerExceptio at com.bridge.TestClass.main(BridgeApplicationTests.java:101)
因为空指针异常,double[] double4; 相当于在栈创建了一个引用,但是并未指向堆中的某个对象实例,故会报空指针异常。
解决
将 double3 初始化 double3=0.0;
double4 指向 booleans ,或者 new一个实例数组
class TestClass {
static double double1;
double double2;
double[] double4;
public static void main(String[] args) {
double double3=0.0;
TestClass testClass = new TestClass();
System.out.println(double1);//0.0
System.out.println(testClass.double2);//0.0
System.out.println(double3);//0.0
double[] booleans = new double[16];
testClass.double4 = new double[16];
System.out.println(booleans[0]);//0.0
System.out.println(testClass.double4);//[D@4edde6e5
System.out.println(testClass.double4[0]);//0.0
}
}
运行结果:
0.0
0.0
0.0
0.0
[D@4edde6e5
0.0