先看代码
class MyObj { public int b = 99; } class Test{ public static void main(String[] args) { Test t = new Test(); int a = 99; MyObj obj1 = new MyObj(); t.test2(obj1);// 这里传递的参数obj就是引用传递 System.out.println(obj1.b); } public void test2(MyObj obj) { obj = new MyObj(); //纠结在这一行 obj.b = 100; System.out.println(obj.b); } }
1.我在搜索java值传递和引用传递时,发现了巨大的矛盾,一部分人说全部是值传递,另一部分人说分值传递和引用传递
,现在问题纠结在 运行搭配 test2方法的参数obj 是否是拷贝了对象obj1 ,又分配了一块内存地址都指向堆内存obj1对象。
2.我希望获得一个工具能够让我查看执行到test2的方法时的内存 ,我尝试jvisualvm并不能看到
qq_笑_17
萧十郎
慕盖茨4494581
扬帆大鱼
相关分类