关于java对象初始化顺序
2016-09-17 19:10
309 查看
先建立一个简单测试类
输出结果
可以看出在初始化一个对象的时候,是首先初始化静态变量,然后是静态代码块,然后是代码块,最后才是构造函数。
为了更加清晰看出静态变量和静态代码块的执行顺序,改一下代码
运行结果:
因为静态变量和静态代码块是不依赖对象存在的,所以在加载类的时候就会加载这些代码。方便调用,所以一般希望在项目一启动就执行的代码就会放在static里面。
单纯是为了做一下读书笔记,有什么不对的地方欢迎指正。
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里面。
单纯是为了做一下读书笔记,有什么不对的地方欢迎指正。
相关文章推荐
- java学习笔记4:对象的初始化顺序(官方实例)
- Java对象初始化顺序
- Java类和对象的初始化顺序
- Java类属性和对象属性的初始化顺序
- Java 对象初始化顺序
- java类与对象的初始化顺序
- java对象的初始化顺序
- 关于JAVA Static的初始化顺序(及递归错误)
- java对象初始化顺序
- java对象的初始化顺序
- java对象初始化顺序
- 关于java对象初始化的问题
- Java对象初始化顺序
- Java基础 构造对象初始化变量的顺序浅见
- java对象初始化顺序
- Java学习笔记(1) 对象初始化顺序
- java对象初始化顺序
- Java对象初始化顺序
- 关于java中初始化顺序的总结及其势力代码!希望高手们可以帮助补充
- My_Java之笔记(3)-对象初始化顺序