zoukankan      html  css  js  c++  java
  • 类加载过程

    类加载过程:

    public class SSClass {
        static {
            System.out.println("SSClass static");
        }
    }
    
    public class SuperClass extends SSClass {
        static {
            System.out.println("SuperClass static");
        }
        protected static int value=123;
        public SuperClass(){
            System.out.println("SuperClass 构造函数");
        }
    }
    
    
    /**
     类加载过程:加载、验证、准备、解析、初始化、使用、卸载
     加载:根据全限定类名生成类的二进制字节流类信息,并将其放到方法区
     验证:主要验证二进制字节流是否符合当前虚拟机的要求
     准备:正式为类变量(不包括实例变量)分配内存并设置类变量初始值。如果没有被final修饰的类变量则被初始化为0,null等;如果被final修饰,如
            protected static final int value=123;则被初始化为123
     解析:虚拟机将常量池中的符号引用替换为直接引用
     初始化:类加载过程的最后一步,将静态变量(类变量)设置为给定值;执行静态代码块中的代码
     使用:比如new,会调用构造函数
     */
    public class SubClass extends SuperClass {
        private static int a=111;
        static {
            System.out.println("SubClass static");
        }
    
        public SubClass(){
            System.out.println("SubClass 构造函数");
        }
    
        public static void m1(){
            int a=0;
            System.out.println(a);
        }
    
        public static void main(String[] args){
            System.out.println(SubClass.value);//引用父类的静态字段会执行初始化
            System.out.println(SubClass.a);//引用父类的静态字段会执行初始化
            SubClass.m1();//引用父类的静态字段会执行初始化
            SubClass subClass=new SubClass();//执行构造函数
        }
    }

    输出结果:
    SSClass static
    SuperClass static
    SubClass static
    123
    111
    0
    SSClass 构造函数
    SuperClass 构造函数
    SubClass 构造函数

     如果main()函数中什么都不写,则输出如下:

    SSClass static
    SuperClass static
    SubClass static

     
  • 相关阅读:
    C#事务相关
    建造者模式
    CUPS/Printer sharing
    vim note write
    linux下神奇的script
    Nginx server之Nginx添加ssl支持
    nginx使用ssl模块配置HTTPS支持
    stardict dict url
    收银台(POSBox) 配置向导
    让 Odoo POS 支持廉价小票打印机
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/10978356.html
Copyright © 2011-2022 走看看