bzh2021 发表于 2021-6-10 11:54

Java的类的加载过程




1.加载:查找并加载类的文件数据

2.连接:将已经读入内存的类的文件数据合并到jvm运行时环境中去
         a) 验证:确保被加载.class文件的规范符合jvm运行的规范
         b) 准备:为类的静态变量分配内存,并初始化
         c) 解析:把常量池中的符号引用转换成直接引用
3.初始化:为类的静态变量初始化值



如果理解上面的内容:
public class MyClassA {
    private static MyClassA myClassA = new MyClassA();
    private static int a=0;
    private static int b;

    public MyClassA() {
      a++;
      b++;
    }
    public static MyClassA getObject(){
      return myClassA;
    }

    public int getA(){
      return a;
    }
    public int getB(){
      return b;
    }

    public static void main(String[] args) {
      MyClassA myClassA = MyClassA.getObject();
      System.out.println("a="+myClassA.getA()+" ,b="+myClassA.getB());
    }
}
请问数据的结果是多少就能很明白?

在下 发表于 2021-6-11 08:51

能否结合所给代码示例进一步解析一呢?

右京也爱花吗 发表于 2021-7-1 12:08

解释一下呗,没搞懂结果为什么是a=0,b=1

bzh2021 发表于 2021-7-1 14:11

右京也爱花吗 发表于 2021-7-1 12:08
解释一下呗,没搞懂结果为什么是a=0,b=1

new 对象在上面 这时候 a会初始化0并++操作,但是static int a=0有对a重新进行了初始化

右京也爱花吗 发表于 2021-7-2 23:06

bzh2021 发表于 2021-7-1 14:11
new 对象在上面 这时候 a会初始化0并++操作,但是static int a=0有对a重新进行了初始化

半知半解,谢谢啦
页: [1]
查看完整版本: Java的类的加载过程