类加载内存分析

代码演示
package com.test5;
public class test5 {
public static void main(String[] args) {
A a=new A();
System.out.println(A.m); //100
System.out.println(a.m); //100
/*运行结果
* A类静态代码块初始化
* A类的无参构造初始化
* 100
* 100
* */
}
}
class A{
static {
System.out.println("A类静态代码块初始化");
m=300;
}
/*初始值 m=0
* m=300
* m=100
*/
static int m=100;
public A() {
System.out.println("A类的无参构造初始化");
}
}
分析
1.加载到内存,会产生一个类对应class对象
2.链接,链接结束后m=0
3.初始化 <clinit>(){
System.out.println("A类静态代码块初始化");
m=300;
m=100
}
m=100;

本文探讨了Java中类加载的过程,包括加载、链接和初始化阶段。在代码示例中展示了类静态代码块和变量初始化的顺序,分析了类对象在内存中的状态变化。通过对A类的静态代码块和构造器的调用,解释了静态变量m的赋值过程。
243

被折叠的 条评论
为什么被折叠?



