您的位置:首页 > 编程语言 > Java开发

Java方法参数的传递方式

2018-02-08 00:37 369 查看
一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
一个方法可以改变一个对象(数组)参数的状态。
一个方法不能让对象参数(数组)引用一个新的对象。

简单来说,一个方法只能改变(对象  /  数组)参数的状态。例参数是数组时,如果在方法内对对数组参数进行修改,原数组的值也会相应改变。
public class ParamTest {
public static void main(String[] args) {
/*
*Test1: Methods can't modify numeric parameters
*/
System.out.println("Testing tripleValue:");
double percent = 10;
System.out.println("Before: percent=" + percent);
tripleValue(percent);
System.out.println("After: percent=" + percent);

/*
*Test2: Methods can change the state of object parameters
*/
System.out.println("\nTesting tripleSalary");
Employee harry = new Employee("Harry", 50000);
System.out.println("Before: salary=" + harry.getSalary());
tripleSalary(harry);
System.out.println("After: salary=" + harry.getSalary());

/*
*Test3: Methods can't attach new objects to object parameters
*/
System.out.println("\nTesting swap");
Employee a = new Employee("Alice", 30000);
Employee b = new Employee("Bob", 60000);
System.out.println("Before: a=" + a.getName());
System.out.println("Before: b=" + b.getName());
swap(a, b);
System.out.println("After: a=" + a.getName());
System.out.println("After: b=" + b.getName());
}

public static void tripleValue(double x) {
x *= 3;
System.out.println("End of method: x=" + x);
}

public static void tripleSalary(Employee x) {
x.raiseSalary(200);
System.out.println("End of method: salary=" + x.getSalary());
}

public static void swap(Employee x, Employee y) {
Employee temp = x;
x = y;
y = temp;
System.out.println("End of method: x=" + x.getName());
System.out.println("End of method: y=" + y.getName());
}
}

class Employee {
private String name;
private double salary;
public Employee(){}
public Employee(String name, double salary){
this.name = name;
this.salary = salary;
}

public String getName() {
return name;
}

public double getSalary() {
return salary;
}

public void raiseSalary(double byPercent){
double raise = salary * byPercent / 100;
salary += raise;
}
}

程序运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: