有些程序员,认为java对对象采用的是引用调用,实际上这种理解是不对的!!!
举例代码:
先写一个People类
package diaoYong;
class People {
private String name;
public People(String str) {
name = str;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
再写一个Main_2类
package diaoYong;
class Main_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
People p1 = new People("猪八戒");
People p2 = new People("孙悟空");
System.err.println(p1.getName());
System.err.println(p2.getName());
exchange_People(p1,p2);
System.err.println(p1.getName());
System.err.println(p2.getName());
}
public static void exchange_People(People x,People y) {
People temp = x;
x = y;
y = temp;
}
}
实现结果:
猪八戒
孙悟空
猪八戒
孙悟空
扫描二维码关注公众号,回复:
2186005 查看本文章
如果Java对对象是输出结果应该是猪八戒和孙悟空交换才对,我们发现,其实没有改变,这就说明java对对象不是按引用调用。
为什么会这样?看下边的图。
第一步实例化对象
第二步传参
第三步交换
由图所知,最终交换的只是x和y,也就是说只是两个拷贝的交换,跟p1和p2没有关系啊!!!!!!!