• 分析类的初始化


    1.8、分析类的初始化

    public class Test06 {
        static {
            System.out.println("Main类被加载");
        }
    
        public static void main(String[] args) throws ClassNotFoundException {
            //1.主动引用
            //Son son = new Son();
    
            //反射也会被主动引用
            //Class.forName("com.xu.reflection.Son");
    
            //不会产生类的初始化
            //System.out.println(Son.b);
            //Son[] sons = new Son[10];
            System.out.println(Son.M);
        }
    }
    class Father{
        static int b =1;
        static {
            System.out.println("父类被加载");
        }
    }
    class Son extends Father{
        static {
            System.out.println("子类被加载");
            a =30;
        }
        static int a =10;
        public final static int M = 100;
    }
    

    分析:

    1. 产生类的初始化
      • new一个实例会初始化,先加载Main类,再加载父类,最后加载子类
      • 反射一个实例也会初始化
    2. 不产生类的初始化
      • 通过子类名调用父类静态资源,加载Main类,再加载父类,不加载子类
      • 创建一个类的数组 只加载Main类
      • 通过类名调用常数 只加载Main类
    刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
  • 相关阅读:
    网络记事本第八天
    软件工程第十周总结
    网络记事本第六,七天
    网络记事本开发,第四天
    网络记事本开发第二,三天
    leetcode 198 打家劫舍
    leetcode 46 全排列
    设计模式 之 动态代理
    设计模式 之 静态代理
    设计模式 之 桥接模式
  • 原文地址:https://www.cnblogs.com/xd-study/p/13201563.html
Copyright © 2020-2023  润新知