- 一、传值机制
- 1.基本数据类型的传值
- 2.引用类型参数传值
- 3.说明
将实际参数的副本传递到方法内,而参数的本身不受任何影响。
1.基本数据类型的传值对于基本数据类型的参数,向该参数传值的级别不能高于该参数的级别。比如:不能向int型数据传一个float值,但可以向double 型参数传递一个float值。
class Point{
int add(int x,int y) {
return x+y;
}
}
public class Example {
public static void main(String[] args) {
Point ap = new Point();
int a = 15;
int b = 32;
int sum = ap.add(a, b);
System.out.print(sum);
}
}
2.引用类型参数传值
当参数是引用类型时,传递的值是变量中存放的“引用”,而不是变量的实体。当两个相同的类型引用变量,如果具有同样的引用,就会用同样的实体,因此,如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化,但是改变参数中存放“引用”不会影响其传值变量中存放的“引用”。
例如:Car类为汽车类,负责创建一个汽车类的对象,fuelTank类是一个油箱类,负责创建油箱的对象。Car类创建的对象调用run(fuelTank ft)方法时,需要将fuelTank类创建的油箱对象ft传递给run(fuelTank ft)。
class fuelTank{//定义一个邮箱类
int gas;//定义汽油
fuelTank (int x){
gas = x;
}
}
class Car{
void run(fuelTank ft) {
ft.gas = ft.gas-5;//消耗的汽油
}
}
public class Example2 {
public static void main(String[] args) {
fuelTank ft = new fuelTank(100);//创建油箱对象,把油加满
System.out.println("当前油箱的油量是:"+ft.gas);//显示当前油箱油量
Car car =new Car();//创建汽车对象
System.out.println("下面启动汽车");
car.run(ft);//启动汽车
System.out.println("当前汽车的油量是:"+ft.gas);
}
}
3.说明
按值传递意味着将一个参数值传递给一个函数时,函数接受的是原始值的一个副本。因此,如果函数改变了参数,仅仅是改变了副本,而原始值保持不变。按引用传递意味着两个变量指向的是同一个对象的引用地址,这两个变量操作的是同一个对象。因此,如果函数修改了参数,调用代码中的原始值,也会随着改变。



