初始化和清理是程序设计安全性的两个最重要的问题。下面我们就总结一下和初始化有关的知识。
成员变量
成员变量:由于任何方法都可以初始化或使用成员变量数据,所以在正式使用数据前,若还是强迫程序员将其一一初始化成一个适当的值,就可能不够实际。因此,一个类的所有数据成员都会保证获得一个确定的值。也就是说成员变量在声明了之后,如果没有赋初始值会自动赋予一个默认的初始值。
我们简单用下列代码测试一下,不同的数据类型的默认初始化值是什么。
import java.util.List;
public class Test {
private short s;
private int a;
private long l;
private float f;
private boolean b;
private double d;
private char c;
private List list;
public Test() {
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Test [s=" + s + ", a=" + a + ", l=" + l + ", f=" + f + ", b=" + b + ", d=" + d + ", c=" + c + ", list="
+ list + "]";
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.toString());
System.out.println((short) (t.c));
}
}
可以得出一下结果:
我们可以得出结论,基本数据类型的默认初始化的值为:
- short=0
- int=0
- long=0
- float=0.0
- double=0.0
- boolean=false
- char=(char)0
复杂数据类型默认初始值为:null。
局部变量
布局变量:在被使用之前就必须给它赋值,要不然程序编译就会报错!
初始化顺序
类的初始化顺序是:
1、父类静态变量
2、父类静态代码块
3、子类静态变量
4、子类静态代码块
5、父类非静态变量
6、父类非静态代码块
7、父类构造器
8、子类非静态变量
9、子类非静态代码块
10、子类构造器
Java程序初始化一般遵循四个原则:
- 先属性后方法
- 先静态后非静态
- 先声明后赋值
- 先父类后子类