zoukankan      html  css  js  c++  java
  • 分析类的初始化

    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类
    刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
  • 相关阅读:
    window安装swagger editor
    DiffMerge安装配置使用
    线程池相关知识点
    JAVA程序员面试笔试宝典4
    JAVA程序员面试笔试宝典3
    JAVA程序员面试笔试宝典2
    JAVA程序员面试笔试宝典1
    Linux开启ssh服务
    面试题
    java基础学习之垃圾回收机制
  • 原文地址:https://www.cnblogs.com/xd-study/p/13201563.html
Copyright © 2011-2022 走看看