黑马程序员技术交流社区
标题: java对对象采用的是引用调用的验证 [打印本页]
作者: Demomiku 时间: 2015-5-5 15:49
标题: java对对象采用的是引用调用的验证
很多程序设计语言(特别是C++)提供了两种参数传递的方式:值调用和引用调用。有些程序员认为java采用的是引用调用,实际上这是错误的。我们可以给出一个反例来详细地阐述一下这个问题。
首先,编写一个雇员类Employee:
- class Employee
- {
- private String name;
- public Employee(String name)
- {
- this.name = name;
- }
-
- public String getName()
- {
- return name;
- }
- public void setName(String name)
- {
- this.name = name;
- }
-
复制代码然后,编写一个交换雇员对象的方法:
- public static void swap(Employee x,Employee y)
- {
- Employee temp = x;
- x = y;
- y = temp;
- }
复制代码如果java程序设计语言对对象采用的是引用调用,那么这个方法就应该能够实现交换数据的效果:
- Employee a = new Employee("Alice");
- Employee b = new Employee("Bob");
- swap(a,b);
复制代码但是,方法并没有改变存储在变量a和b中的对象的引用。swap方法的参数x和y被初始化为两个对象的拷贝,这个方法交换的是这两个拷贝。最终,白费力气。在方法结束时参数变量x和y被抛弃了。原来的变量a和b任然引用这个方法调用前所引用的对象。 这个过程说明:java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递。
-
1.PNG
(92.17 KB, 下载次数: 2)
swap
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |