首先要运行主函数,类aj加载进内存,此时虚拟机读类aj中的静态代码块,输出b,c ;接下来 用new a 加载了类a,然后类a中的静态代码块加载进内存 为类a 进行初始化,输出20,第二个 new a(); 因为已经在内存中加载过了,所以不再加载;此时static int a=5 int b=3;同理将堆内存中开辟的2个空间地址赋值给a1,a2使他们指向2个不同对象。接下来用a1.set(30)将 a1中b的值修改为30,打印a1.b=30,但是a2.b=3没有变。然后用a1.a=50将 数据区的a值修改为50,所以a1.a=a2.a=50 两次打印均为50. 最终打印结果为 b c 20 30 3 50 50 以上为分析过程。
手打不易,求分!! |