关于Java引用的一点小小的问题

我创建了两个类测试

 package Test;

public class Test{
    public Integer a;

    public static void main(String[] args) {


    }
    Test() {
        a = new Integer(0);
    }

}

 package Test;

public class Test2 {
    public Integer a;
    public Test b;


    public Test2(Test b) {
        a = b.a;
        this.b = b;
    }

    public static void main(String[] args) {
        Test2 a = new Test2(new Test());
        System.out.println(a.a);
        a.b.a=1;
        System.out.println(a.a);
    }
}

结果发现尽管两个类里的Integer类型理论上应该都是引用的同一个地址,但是为毛就是不行啊

构造器初始化发生在对象实例化时期,a.b.a=1;不会再去执行构造方法,可以理解吗

可以去看Integer的源码, 里面存放值value是用final修饰,是不能改变的

你修改的是引用a.b.a指向的值,跟a.a的指向有什么关系? 这是两个无关的引用,在Java里面,都指向0的时候确实是同一块内存,但是你改变了其中一个引用,跟另一个引用的指向有什么关系呢