ParamTest.java
public class ParamTest {
public static void tripleValue(double x) {
x = 3 * x;
System.out.println("方法結束: x=" + x);
}
public static void tripleSalary(Employee e) {
e.raiseSalary(200);
System.out.println("方法結束: salary=" + e.getSalary());
}
public static void swap(Employee x, Employee y) {
Employee temp = x;
x = y;
y = temp;
System.out.println("方法結束: x=" + x.getName());
System.out.println("方法結束: y=" + y.getName());
}
public static void main(String[] args) {
/*
測試1: 方法不能修改基本資料型別的引數(即數值型或布林型)
*/
System.out.println("測試tripleValue:");
double percent = 10;
System.out.println("方法執行前: percent=" + percent);
ParamTest.tripleValue(percent);
System.out.println("方法執行後: percent=" + percent);
/*
測試2: 方法可以改變物件引數的狀態
*/
System.out.println("\n測試tripleSalary:");
Employee e = new Employee("張三", 1000);
System.out.println("方法執行前: salary=" + e.getSalary());
tripleSalary(e); // 同一個類內部,靜態方法可以直接被引用,無需顯式地指定類名
System.out.println("方法執行後: salary=" + e.getSalary());
/*
測試3: 方法不能讓一個物件引數引用一個新物件
*/
System.out.println("\n測試swap:");
Employee a = new Employee("李四", 3000);
Employee b = new Employee("王五", 2000);
System.out.println("方法執行前: salary=" + a.getSalary());
System.out.println("方法執行前: salary=" + b.getSalary());
swap(a, b);
System.out.println("方法執行後: salary=" + a.getSalary());
System.out.println("方法執行後: salary=" + b.getSalary());
}
}
參考輸出
測試tripleValue:
方法執行前: percent=10.0
方法結束: x=30.0
方法執行後: percent=10.0
測試tripleSalary:
方法執行前: salary=1000.0
方法結束: salary=3000.0
方法執行後: salary=3000.0
測試swap:
方法執行前: salary=3000.0
方法執行前: salary=2000.0
方法結束: x=王五
方法結束: y=李四
方法執行後: salary=3000.0
方法執行後: salary=2000.0