Java类什么时候会被加载?

在Java中,类的加载是Java程序运行时的一个重要过程,它是将类的字节码加载到Java虚拟机中的过程。Java类在以下几种情况下会被加载:

  1. 当创建类的实例:

    当通过关键字new创建类的实例时,对应的类将被加载。例如:MyClass obj = new MyClass();

  2. 当访问类的静态成员(静态字段或方法)时:

    当访问一个类的静态成员,如静态字段或静态方法时,该类会被加载。例如:int result = MyClass.staticField;MyClass.staticMethod();

  3. 当使用反射机制操作类时:

    当使用Java的反射机制,如Class.forName("className")ClassLoader.loadClass("className")等方式时,对应的类会被加载。

  4. 当虚拟机启动时主动加载的类:

    在程序启动时,Java虚拟机会通过主类(包含main方法的类)加载其他类。这是整个Java应用程序启动的初始加载。

  5. 当执行特定的字节码指令时:

    当虚拟机执行特定的字节码指令时,例如使用invokedynamic指令执行动态语言的调用,相应的类也会被加载。

  6. 当调用Class对象的方法时:

    当调用一个类的Class对象的方法时,如获取类的构造方法、字段、方法等信息时,对应的类也会被加载。

  7. 当使用JDK1.7的动态语言支持时:

    在JDK1.7及之后的版本中,引入了对动态语言的支持,当通过MethodHandle实例分派到具体的实现时,相应的类也可能被加载。

需要注意的是,类加载过程中的初始化阶段(执行类的静态初始化代码块和静态字段初始化)是在类加载过程中的最后一个阶段。这表示虽然加载了类,但不一定进行了类的初始化。只有在需要对类进行初始化时,虚拟机才会真正执行类的初始化过程。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的小白L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值