美文网首页
jvm 类的加载,连接与初始化

jvm 类的加载,连接与初始化

作者: 秋缘未了 | 来源:发表于2019-04-03 15:28 被阅读0次

    1.类的加载过程

    • 加载 :查找并加载类的二进制数据
    • 连接:
      1.验证:确保被加载的类的正确性
      2.准备:为类的静态变量分配内存,并将其初始化为默认值
      3.解析:把类的符号引用转为直接引用
    • 初始化
      为类的静态变量赋予正确的初始值

    java程序对类的使用方式可分为两种

    • 主动使用
    • 被动使用

    所有的java虚拟机实现必须在每个类或接口被java程序“首次主动使用”时才会被初始化他们

    2.主动使用的场景

    1.创建类的实例
    2.访问某个类或接口的静态变量,或者对该静态变量赋值
    3.调用类的静态方法
    4.反射
    5.初始化一个类的子类
    6.Java虚拟机启动时被标明为启动类的类
    7.JDK1.7开始提供的动态语言支持
    除了以上七种情况,其他使用java类的方式都会被看作是对类的被动调用,都不会导致类的初始化

    3.加载.class文件的方式

    • 从本地系统中直接加载
    • 从网络下载.class文件
    • 从zip jar 等归档文件中加载
    • 从转悠数据库中提取.class
    • 将java源文件动态编译为.class文件

    练习题:

    public class MyText{
      public static void main(String[] args){
        System.out.printIn(MyChild.str)
    }
    }
    
    class MyParent{
      public static String str = "hello world";
      
      static{
        System.out.printIn("MyParent static block")
        }
    }
    
    class MyChild{
      public static String str1 = "welcome";
      
      static{
        System.out.printIn("MyChildstatic block")
        }
    }
    
    

    相关文章

      网友评论

          本文标题:jvm 类的加载,连接与初始化

          本文链接:https://www.haomeiwen.com/subject/ntdabqtx.html