zoukankan      html  css  js  c++  java
  • JVM(二)表示两个Class对象是否为同一个类;Java程序对类的使用

    在JVM中表示两个Class对象是否为同一个类存在两个必要条件:

        1.类的完整类名必须一致

        2.加载这个类的ClassLoader(指ClassLoader实例对象)必须相同

        换句话说,在JVM中,即时这两个类对象(class对象)来源于同一个Class文件,被同一个虚拟机所加载,但只要加载他们的ClassLoader实例对象不同,那么这两个类对象也是不相等的

    对类加载器的引用:

      JVM必须知道一个类型是由启动类加载器还是用户类加载器加载的。如果是由用户类加载器加载的,那么JVM会将这个类加载器的一个引用作为类型信息的一部分保存在方法区中。当解析一个类型到另一个类型的的引用的时候,JVM需要保证这两个类型的类加载器是相同的。

    Java程序对类的使用方式:类的主动使用和被动使用

      主动使用,有7种情况:

        创建类的实例

        访问某个类的接口或静态变量,或者对该静态变量赋值

        调用类的静态方法

        反射(如Class.forName(“com.tomasCarry.Test”))

        初始化一个类的子类

        Java虛拟机启动时被标明为启动类的类

        JDK 7开始提供的动态语言支持:      

              java. lang. invoke . MethodHandle实例的解析结果REF getStatic、REF putStatic、REF invokeStatic句柄对应的类没有初始化,则初始化

      除了以上7中,其他的使用都是被动使用,都不会导致类的初始化

  • 相关阅读:
    php.ini 干了些啥?
    为什么你的 phpinfo() 无法显示
    转:反向代理服务器的工作原理
    nginx fastcgi php-fpm的关系梳理
    DOM中offsetLeft与style.left的区别
    移动端与PC端的触屏事件
    移动端适配属性
    移动设备横竖屏监听事件
    关于滚动条滚动不流畅问题
    Oracal
  • 原文地址:https://www.cnblogs.com/Timeouting-Study/p/12470297.html
Copyright © 2011-2022 走看看