-2

我有疑问在java中加载类时会加载以下哪些方法,变量,块,而不管对象的创建和不通过对象访问它们?

1. static variables 
2. static methods 
3. final variables,methods 
4. static blocks 
5. instance ({..... })blocks
6. main()
7. constructors (argumented and default)
8. instance variables 

在java中加载类时加载了哪些?*(不需要加载顺序我只想知道在java中加载之前或与类加载一起加载的内容)

4

2 回答 2

1

当 JVM 加载一个类时,它会加载该.class文件及其包含的所有内容,这就是您上面列出的所有内容。当然,这并不意味着实际执行的所有内容。

编辑:看起来您认为类的每个部分(字段、方法等)都是不同的部分,并且是单独加载的。不是这种情况。.class 文件包含一个类的所有部分,它们在 .class 加载到内存时同时加载。也许你的困惑来自于如何使用反射,你在哪里拥有Class,和这样的类。这些实际上是 JVM 在解析 .class 文件以允许反射等功能时创建的虚拟部分。MethodContructor

于 2013-09-26T11:56:43.173 回答
1

初始化一个类时,会为该类加载所有元数据。然而,在使用之前几乎没有做任何事情。对于您提到的每个阶段,它们都是在首次运行时执行的。

于 2013-09-26T12:01:42.827 回答