问题描述
最近在学习类加载相关的知识,在学习相关文章时看到了类何时被初始化的内容。
类的初始化
类什么时候才被初始化:
1)创建类的实例,也就是new一个对象
2)访问某个类或接口的静态变量,或者对该静态变量赋值
3)调用类的静态方法
4)反射(Class.forName("com.lyj.load"))
5)初始化一个类的子类(会首先初始化子类的父类)
6)JVM启动时标明的启动类,即文件名和类名相同的那个类 只有这6中情况才会导致类的类的初始化。
前5
个我都理解,就是最后一个这个不太明白?到底什么是JVM启动时标明的启动类
,是main
方法的那个类吗?
Google
了半天也没找到相关结果,如果您有时间,希望得到您的指点,感激不尽。
不是有 main 方法的类, 可能多个类有 main 方法. 而是命令行参数的指定的类, 如你个
com/example/Abc.java
文件, 编译后生成com/example/Abc.class
, 这个类有main 方法, 执行时需要指定类名这里的 com.example.Abc 就是上面
JVM启动时标明的启动类
所指