Java基础-参数传递
来源:互联网 发布:淘宝被投诉假冒品牌 编辑:程序博客网 时间:2024/05/16 06:35
程序设计语言中有关将参数传递给方法(或函数)的方式有两种。按值传递(call by value)表示方法接收的是调用者提供的值。而按引用调用(call by reference)表示方法接收的是调用者提供的变量地址 。一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。
java程序设计语言总是采用*按值调用*,也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。
代码示例:
package JavaBase.ParameterTransfer;/** * java基础,基本类型参数传递测试类 * * @author zhouTing * */public class ChangeValueTest { public static void main(String[] args) { int num = 3; toChangeValue(num); System.out.println("num = " + num); } public static void toChangeValue(int x){ x = x*3; }}
输出结果:
num = 3
可以看到,无论怎样,调用这个方法之后,num的值还是3。下面看一下具体的执行过程:
- x被初始化为num值得一个拷贝,也就是3.
- x被乘以3后等于9。但是num仍然是3.
- 这个方法结束之后,参数变量x不再使用。
然而,方法的参数共有两种类型:
- 基本数据类型
- 对象引用
一个方法不可能修改一个基本数据类型的参数,而对象引用作为参数就不同了。
package JavaBase.ParameterTransfer;/** * Java基础,对象类型参数传递,测试类 * * @author zhouTing * */public class ObjectValueTest { public static void main(String[] args) { Employee employee = new Employee("Max", 65); toChangeValue(employee); System.out.println("name : " + employee.getName() + " | age : " + employee.getAge()); } public static void toChangeValue(Employee emp) { emp.setName("Tom"); emp.setAge(20); }}
输出结果:
name : Tom | age : 20
当调用 toChangeValue(employee)时,具体的执行过程为:
- emp被初始化为employee值得拷贝,这里是一个对象的引用。
- toChangeValue方法应用于这个对象的引用,emp和employee同时引用的那个Employee对象的属性值改变。
方法结束收,参数emp不再使用,对象employee继续引用属性值改变后的对象。(如下图所示)
由此可见实现一个改变对象参数状态的方法并不是一件难事,理由很简单,方法得到的是对象引用的拷贝,对象引用及其拷贝同时引用同一个对象。
下面总结一下Java中方法参数的使用情况:
- 一个方法不能修改一个基本数据类型的参数。
- 一个方法可以改变一个对象参数的状态。
阅读全文
0 0
- java基础 传递参数
- Java基础-参数传递
- 14.Java 基础 - 参数传递
- Java基础-参数传递问题
- JAVA基础--参数传递问题
- [Java基础]java中函数参数传递
- Java基础:参数传递(一)
- Java基础:参数传递(二)
- Java基础:参数传递(三)
- Java SE 基础:方法的参数传递
- JAVA基础之方法参数传递
- Java基础——详解Java中的String参数传递
- Java基础(五)Java中的参数传递机制
- java学习之基础篇 参数传递[转]
- java小基础(1)关于参数传递
- java基础之函数参数传递过程解析
- java基础——方法参数的值传递机制
- Java基础(六)方法与参数传递
- socket编程 send() recv() sendto() recvfrom()
- mysql 视图
- Android Studio(windows快捷键)转载
- annotation注解服务层对象和持久层对象
- malloc函数与free函数
- Java基础-参数传递
- Android N中SurfaceView泄露的问题分析
- 《剑指offer》的青蛙跳级算法
- Spark性能调优(三)
- POJ1852-Ants
- java算法--判断质数
- 关于FTP的两种连接模式
- RabbitMQ基础
- Android常用控件二