您的位置:首页 > 编程语言 > Java开发

关于java对象初始化顺序

2016-09-17 19:10 309 查看
先建立一个简单测试类

public class Ch1 {
private static String company;
//private static String company="test";
private int i = 110;

static {
System.out.println("静态块");
System.out.println("company: " + company);
}

{
System.out.println("代码块");
System.out.println(i);

}

public Ch1() {
System.out.println("构造函数");
}

public static void main(String[] args) {
Ch1 c=new Ch1();
}
}


输出结果



可以看出在初始化一个对象的时候,是首先初始化静态变量,然后是静态代码块,然后是代码块,最后才是构造函数。

为了更加清晰看出静态变量和静态代码块的执行顺序,改一下代码

public class Ch1 {
//private static String company;
//这里和刚才不同了
private static String company="test";
private int i = 110;

static {
System.out.println("静态块");
System.out.println("company: " + company);
}

{
System.out.println("代码块");
System.out.println(i);

}

public Ch1() {
System.out.println("构造函数");
}

public static void main(String[] args) {
Ch1 c=new Ch1();
}
}


运行结果:



因为静态变量和静态代码块是不依赖对象存在的,所以在加载类的时候就会加载这些代码。方便调用,所以一般希望在项目一启动就执行的代码就会放在static里面。

单纯是为了做一下读书笔记,有什么不对的地方欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: