java基础入门-方法参数的调用是值调用而不是引用调用
2015-04-29 09:55
465 查看
方法参数的调用是值调用而不是引用调用
输出:
--bill:com.ray.object.Person@1fb8ee3
**jack:com.ray.object.Person@61de33
a:com.ray.object.Person@61de33
b:com.ray.object.Person@1fb8ee3
--bill:com.ray.object.Person@1fb8ee3
**jack:com.ray.object.Person@61de33
从上面的输出结果可以看见,在swap方法里面,两个参数的确是已经调换了,但是由于参数是对象,所有调用的时候是值调用,而不是引用调用,
只不过参数返回的值变动了,但是相应的对象还是没有变,因此,最后的结果两个对象是没有调换过来
package com.ray.object; /** * 方法参数的调用是值调用,而不是引用调用 * * @author ray * @since 2015-04-22 * @version 1.0 * */ public class Person { private static void swap(Person a, Person b) { Person temp = a; a = b; System.out.println("a:" + a); b = temp; System.out.println("b:" + b); } public static void main(String[] args) throws Exception { Person bill = new Person(); Person jack = new Person(); System.out.println("--bill:" + bill); System.out.println("**jack:" + jack); Person.swap(bill, jack); System.out.println("--bill:" + bill); System.out.println("**jack:" + jack); } }
输出:
--bill:com.ray.object.Person@1fb8ee3
**jack:com.ray.object.Person@61de33
a:com.ray.object.Person@61de33
b:com.ray.object.Person@1fb8ee3
--bill:com.ray.object.Person@1fb8ee3
**jack:com.ray.object.Person@61de33
从上面的输出结果可以看见,在swap方法里面,两个参数的确是已经调换了,但是由于参数是对象,所有调用的时候是值调用,而不是引用调用,
只不过参数返回的值变动了,但是相应的对象还是没有变,因此,最后的结果两个对象是没有调换过来
相关文章推荐
- java基础入门-方法参数的调用是值调用而不是引用调用
- java基础入门-方法参数的调用是值调用而不是引用调用
- Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)
- Java方法参数是引用调用还是值调用?——值调用
- Java方法参数是引用调用还是值调用?
- java基础入门-动态绑定-调用方法的过程
- Java入门基础之常规的命名方法和变量的值及其引用
- 【解惑】Java方法参数是引用调用还是值调用?
- java的方法调用,参数是按值传递还是按引用传递
- Java核心技术笔记—方法参数(值调用和引用调用)
- Java方法参数是引用调用还是值调用?
- 【解惑】Java方法参数是引用调用还是值调用?
- java基础入门-动态绑定-调用方法的过程
- java基础入门-动态绑定-调用方法的过程
- 【解惑】Java方法参数是引用调用还是值调用?
- 方法参数的调用是值调用而不是引用调用
- Java方法参数是引用调用还是值调用?
- Java方法参数是引用调用还是值调用?
- 2018/01/07JAVA 基础 / 接口与继承:用引用调用对象方法的两种情况讨论
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳