java变量初始化顺序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hzt_fighting_up/article/details/78453332

在类的内部,变量定义的先后顺序决定了初始化顺序,即使变量定义分散在方法定义之外,它们依旧会在任何方法(包括构造器)被调用之前得到初始化

其中初始化的顺序先是静态对象,其后是非静态对象

例如:

class Cat{
    private Dog dog1=new Dog(1);
    static private Dog dog2=new Dog(2);
    public Cat(int n){
        System.out.println("第"+n+"只猫");
    }
}
class Dog{
    public Dog(int n){
        System.out.println("Dog("+n+")");
    }
}
public class TestStatic {
    public static void main(String[] args) {
        System.out.println("test...");
        Cat cat=new Cat(1);
    }
}  

运行结果:

test...
Dog(2)
Dog(1)
第1只猫

cat类和dog类构造器中打印信息为了看初始化信息

在main方法中,创建了一个Cat类,除构造方法外,有两个对象,一个是静态dog,另外一个是dog,因为静态对象有先初始化,所以先打印出Dog(2),其后才是Dog(1)

最后才调用cat的构造方法,打印出cat(1)

非静态实例初始化

{}里初始化的内容在构造器之前执行,且每次生成该类{}将会重新被初始化

猜你喜欢

转载自blog.csdn.net/Hzt_fighting_up/article/details/78453332