(看尚学堂视频学习Java总结 点击打开链接)
Java传递的方式是值传递,相当于拷贝一份,但这并不意味着我们操作另外的对象时,不会修改原来的值,因为传递的对象还是指向原来对象的地址
package cn.swu.stormliu; public class User4 { int id; String name; String pwd; public User4(int id,String name) { this.id=id; this.name=name; } public void testTransfer01(User4 u) { u.name="小八"; System.out.println(u); } public void testTransfer02(User4 u) { u= new User4(200,"小九"); System.out.println(u); } public static void main(String[] args) { User4 u1=new User4(100,"小七"); System.out.println(u1); u1.testTransfer01(u1); System.out.println(u1.name); u1.testTransfer02(u1); System.out.println(u1.name); } }
在上面的代码中,testTransfer01() 方法将 u1 对象传入,这时 test Transfer01()中的 u 与我们生成的 u1 对象指向同一个地址,所以我们修改 testTransfer01() 方法中的 u 对象的 name 时,原来 u1 的 name 也会改变。
testTransfer02()方法中,我们 new 了一个新的对象,所以这个对象指向另一个地址,我们这个时候修改他的属性时不会修改 u1 的属性。所以当我们 print u1.name 时,输出的还是原来的属性