类加载顺序

    技术2024-06-21  76

    类初始化总结

    public class demo{ public static int salary=getSalary();//静态变量 private int workage=getworkage();//实例变量 static {//静态代码块 System.out.print(1); } private static int getSalary() {//静态方法 System.out.print(2); return 2000; } public demo() {//构造方法 System.out.print(3); } {//示例代码块 System.out.print(4); } private int getworkage() {//非静态方法 System.out.print(5); return 12; } public static void main(String []args) { new demo(); new demo(); System.out.print(6); } }

    运行结果

    215435436

    从以上结果我们可以看到类的加载过程,是先从上到下执行静态代码块,然后执行其他方法,当第一次执行new demo()时,先从上到下执行静态代码块,先打印2,后打印1,然后执行实列代码块,最后执行构造方法,所以打印顺序为543,然后执行第二个new demo()时,由于静态变量与方法已经加载完成,所以不再执行。

    public class demo{ static int a=10; public demo() { a=100; } public static void main(String []args) { new demo(); System.out.print(a); } }

    结果

    100

    变量加载过程中首先会分配内存,并赋值(这里的值是0,而不是10),然后在初始化中先赋值10,然后调用构造方法赋值100。

    Processed: 0.037, SQL: 9