Java 方法参数

2020-03-15  本文已影响0人  名字都被你们取了我不生气

方法参数

例如:假定一个方法试图将一个参数值增加至 3 倍

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

很明显,用这个方法之后,percent 的值还是 10 。

具体执行过程为:

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


    在这里插入图片描述

方法参数的两种类型:
•基本数据类型(数字、布尔值)
•对象引用。

上例可知一个方法不可能修改一个基本数据类型的参数 ,
而对象引用作为参数就不同了,如:

public static void tripleSalary(Employee x)     //raiseSalary()是Employee类的方法,作用为薪金提高200%
{
    x.raiseSalary(200) ;
} 
harry = new Employee(. . .) ;
tripleSalary(harry)

具体执行过程为:

  1. X 被初始化为 harry 值的拷贝,这里是一个对象的引用 ;
  2. raiseSalary 方法应用于这个对象引用。x 和 harry 同时引用的那个 Employee 对象的薪金提高了 200%。
  3. 方法结束后,参数变量 x 不再使用.


    在这里插入图片描述

==那么问题来了:==

请问JAVA对对象采用的是引用调用吗?
实际上, 这种理解是不对的,例如:

编写一个交换两个雇员对象的方法 ,如果 Java 对对象采用的是按引用调用,那么这个方法就应该能够实现交换数据的效果:

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); 

实际上,用这个方法之后,数据并没有变化。
为什么呢?

==总结一下:==

上一篇 下一篇

猜你喜欢

热点阅读