java中有关初始化的问题

Posted 何甜甜在吗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中有关初始化的问题相关的知识,希望对你有一定的参考价值。

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

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

例如:

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)

 

非静态实例初始化

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

 

以上是关于java中有关初始化的问题的主要内容,如果未能解决你的问题,请参考以下文章

java中有关初始化的问题

xml 中的 Android 谷歌地图片段。我得到“意外的命名空间前缀”

片段无法转换为 java.util.concurrent.Executor 错误

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?

片段中的 super.onCreateView

java 只有在可见并完成初始化时才会丢弃数据的片段。