java 中没有引用传递,都是值传递的,可以通过传递副本修改对象的,副本交换,并不影响原引用
package Object.reference; public class People { private String name; private int age; public People(){ } public People(String name, int age) { super(); this.name = name; this.age = age; } public String toString(){ return "name:" + name + " age:" + age; } public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } }
package Object.reference; /* java 中的值传递和引用传递 http://www.cnblogs.com/clara/archive/2011/09/17/2179493.html java 中没有引用传递,都是值传递的 */ public class Test { public static void swap(People a, People b, boolean flag) { if (flag) { // 可以通过传递副本修改对象的值 a.setName("changeName"); a.setAge(100); } else { //副本交换,并不影响主程序的指针 People c = a; a = b; b = c; } } public static void main(String[] args) { People p1 = new People("yingjie", 23); People p2 = new People("yuexin", 20); swap(p1, p2,false);//传递的是p1,p2的副本,函数调用前后p1,p2没任何改变 swap(p1, p2,true);//传递的是p1,p2的副本,可以通过传递副本修改对象的值,函数调用前后p1对象内容改变 } }