方法参数有两种类型
- 基本数据类型(数字、布尔值)——>传的是值的拷贝
- 对象引用——>传的是对象的引用的拷贝
示例
/**
* 方法参数测试类
* @author HailongYao
*/
public class Test {
public static void main(String[] args) {
double y = 10;
tripValue(y);//基本数据类型拷贝的是值
System.out.println(y);//输出10
System.out.println("------------");
Test t = new Test();
tripSalary(t);//传入对象的引用
System.out.println(t.salary);//输出12000
System.out.println("------------");
Test t1,t2;
t1 = new Test();
t1.name = "t1";
t2 = new Test();
t2.name = "t2";
System.out.println(t1.name+","+t2.name);//输出t1,t2
swap(t1, t2);
System.out.println(t1.name+","+t2.name);//输出t1,t2
}
//该方法传入一个基本数据类型的变量
public static void tripValue(double x){
x = 3 * x;
}
int salary = 10000;//定义初始工资为10000
//该方法传入一个对象
public static void tripSalary(Test x){
x.raiseSalary(2000);
}
public void raiseSalary(int r){
salary+=r;
}
String name = "";
//该方法测试对象传参是不是引用调用(实际上不是,传的是对象引用的拷贝)
public static void swap(Test a, Test b){
Test temp = a;
a = b;
b = temp;
}
}
输出:
10.0
------------
12000
------------
t1,t2
t1,t2
Process finished with exit code 0
总结
- 一个方法不能修改一个基本数据类型的参数(数值型或布尔型)
- 一个方法可以改变一个对象参数的状态
- 一个方法不能让对象参数引用一个新的对象