类的初始化

初始化和清理是程序设计安全性的两个最重要的问题。下面我们就总结一下和初始化有关的知识。

成员变量

成员变量:由于任何方法都可以初始化或使用成员变量数据,所以在正式使用数据前,若还是强迫程序员将其一一初始化成一个适当的值,就可能不够实际。因此,一个类的所有数据成员都会保证获得一个确定的值。也就是说成员变量在声明了之后,如果没有赋初始值会自动赋予一个默认的初始值。
我们简单用下列代码测试一下,不同的数据类型的默认初始化值是什么。

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程序初始化一般遵循四个原则:

  • 先属性后方法
  • 先静态后非静态
  • 先声明后赋值
  • 先父类后子类
-------------本文结束感谢您的阅读-------------