Java方法参数

在程序设计语言中有关将参数传递给方法的一些术语
按值调用(call by value):表示方法接收的是调用者的值
按引用调用(call by reference)表示方法接收的是调用者提供的变量地址
在Java语言中总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给他的任何参数变量的内容。

 public static void tripeValue(double x){
     x=3*x;
 }
 double percent =10;
 tripleValue(percent);

调用完这个方法之后,percent 的值还是10。下面看下具体执行过程

1)x 被初始化为percent 值的一个拷贝(也就是10)
2)x被乘以3之后等于30.但是percent仍然是10
3)这个方法结束后 ,参数变量X不在使用。
在这里插入图片描述

方法参数共有两种类型
基本数据类型
对象引用
一个方法不可能修改一个基本数据类型参数。而对象引用作为参数就不同了

看一段代码

public static void tripleSalary(Employee x){
 x.raiseSalary(200);
}
harry=new Employee(....);
tripleSalary(harry);

1)x被初始化为harry值的拷贝,这里是一个对象的引用
2)raiseSalary 方法应用于对这个对象引用。x和harry同时引用的哪个
Employee对象的薪金提高了200%
3)方法结束后,参数变量x不再使用,当然,对象变量harry继续引用那个薪金 增至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);

最终 a ,b 并没有完成交换,仍然各自指向 各自的对象
交换的只是 两个对象引用的拷贝。

最后总结:

一个方法不能修改一个基本数据类型参数
一个方法可以改变一个参数的状态
一个方法不能让对象参数引用一个新的对象
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值