zoukankan      html  css  js  c++  java
  • 对Java JVM中类加载几点解释

    1.用到类的时候,类加载到方法区,同时方法区会存放static的内容(包括静态方法和静态变量),随类的加载而加载

    2当new的时候,会在堆中创建一个对象,在其中会开辟其中的实例变量内存并初始化,堆中变量默认会被初始化0 null

    3当方法运行时,进行压栈push操作,不同方法产生一个栈帧,先进后出原则,局部变量是存放在栈中,方法用完后,弹栈pop

    以下代码是类在实例时候的一些执行顺序

    //class
    class Constructors01{
    	String name = "bookThree";//实例变量初始化 要优先于构造代码块
    	static String jk = "klhd";//静态变量初始化 优先于对象创建
    	{
    		System.out.println("3My NAME is " +name);//构造代码块,是初始化所有对象的,优先于对象创建(构造函数)
    	}
    	static {
    		System.out.println("1Follow Class  " + jk);//静态代码块,用于初始类的,随类加载而加载
    	}
    	Constructors01(){
    		name = "hah";
    		System.out.println("4My name change to "+ name);
    	}
    }
    class Constructors01Child extends Constructors01{
    	static{
    		System.out.println("2i am a child static");
    	}
    	{
    		System.out.println("5i  am a child object");
    	}
    	Constructors01Child(){
    		System.out.println("6Me too child object");
    	}
    }
    

      new一个子类对象时,以上代码顺序可归纳为:

    父静态变量
    父静态代码块
    子静态代码块
    父实例变量
    父构造代码块
    父构造函数
    子构造代码块
    子构造函数
    

      

  • 相关阅读:
    python3.6虚拟环境
    安装VMwareTools
    Vsftpd配置(Centos7)
    Sftp配置
    权限问题
    Zabbix5.0微信报警
    K8s Scheduler 在调度 pod 过程中遗漏部分节点的问题排查
    Getting Started and Beyond|云原生应用负载均衡选型指南
    混部之殇-论云原生资源隔离技术之CPU隔离(一)
    云原生技术开放日PPT大放送 | 五星级的云原生开发体验
  • 原文地址:https://www.cnblogs.com/whytohow/p/4875110.html
Copyright © 2011-2022 走看看