JAVA基础之方法参数传递
来源:互联网 发布:微信摇一摇软件 编辑:程序博客网 时间:2024/06/04 18:49
Java方法中参数的调用,到底是值传递还是引用传递
- 我在Java核心艺术一书中阅读到这个点,解开了困扰我多年的疑惑。
首先说下方法参数传递都有哪些- call by value 按值传递
- call by reference按引用调用
- call by name 按名称调用
- ···
- 以上是程序语言方法调用的方式,在这里我可以很明确的告诉大家:
Java程序设计语言总是按值调用 - 解析
- 方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量内容。
案例
- 基本数据类型参数
double percent = 10;tripleValue(percent );public static void tripleValue(double x){ x = x *3;}
执行这个程序你会发现,无论怎么样percent的值都不会改变,然后我们拆解一下执行过程:
1)x被初始化,值为percent的值拷贝
2 )x倍乘以3后,值为30,但是percent的值不变
3)这个方法结束后,参数变量x不在被使用。- 引用数据类型
public statuc void tripleSalary(Employee x){ x.setSalary(200);}Employee harry = new Employee();tripleSalary(harry);
具体执行过程:
1) x被初始化为harry值的拷贝,这里指的是一个对象的引用的拷贝
2) setSalary方法引用于这个对象的引用,x和harry指向同一块实例区域的值被改变
3)方法结束后,参数变量x不在使用,harry继续引用并指向被修改的实例区域- 基本数据类型参数
到此,就有人疑问了,不是说好的,java总是值传递吗,刚才怎么说是拷贝了引用,是不是前后矛盾,我只能说是值传递,引用也是拷贝的引用值,在看下一个例子,你的疑问就没了。
例子3,引用对象,引用修改
public static void swap(Employee x,Employee y){Employee temp = x;x=y;y=temp;}Employee a=new Employee("alice",...);Employee b=new Employee("bob",...);swap(a,b);
如果按照,之前的猜想,引用传递,引用赋值,那么这里就可以对引用进行修改,在赋值。事实上并非如此,看图,无需多做解释。。。
阅读全文
1 0
- JAVA基础之方法参数传递
- java基础之方法传递
- Java SE 基础:方法的参数传递
- java之给方法传递对象参数
- java基础 传递参数
- Java基础-参数传递
- java方法参数传递
- Java方法参数传递
- Java 方法参数传递
- Java方法参数传递
- Java方法参数传递
- java方法参数传递
- java基础——方法参数的值传递机制
- Java基础(六)方法与参数传递
- Java基础——方法的参数传递机制
- java学习之基础篇 参数传递[转]
- java基础之函数参数传递过程解析
- 14.Java 基础 - 参数传递
- Groovy 入门学习小结
- 【LeetCode】4. Median of Two Sorted Arrays两个有序数组的中位数
- Oracle查看用户信息
- Pandas对文件的处理
- spring整合web项目
- JAVA基础之方法参数传递
- redis安装配置总结
- Java8 LinkedList源码分析
- JavaScript难点(二)
- [干货]javax.el.PropertyNotFoundException: Property 'XXX' not found on class 'XX' 问题详解
- 2017 多校训练第三场 HDU 6063 RXD and math
- 如何创建一个ssh项目
- 学习笔记
- Java多线程 线程安全一本通,线程安全,为什么要用多线程,如何同步,单例模式线程安全