关于Java中方法参数的使用情况:
- 1一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。 –> 见ParamTest之Test 1
- 2一个方法可以改变一个对象参数的状态。–> 见ParamTest之Test 2
- 3一个方法不能让对象参数引用一个新的对象。–>见ParamTest之Test 3
ParamTest.java:
/**
*This program demonstrates parameter passing in Java.
*@version 1.01 2016-12-28
*@author NPJ
*/
public class ParamTest {
public static void main(String[] args) {
/*
*Test 1: 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);
/*
*Test 2: 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());
/*
*Test 3:Methods can't attach new objects to object parameters
*一个方法不能让对象参数引用一个新的对象
*/
System.out.println("\nTesting swap:");
Employee a = new Employee("Alice",70000);
Employee b = new Employee("Bod",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) { //doesn't work
x = 3 * x;
System.out.println("End of method:x=" + x);
}
public static void tripleSalary(Employee x) {
x.raiseSalary(200);
System.out.println("End of mehod:salary=" + x.getSalary());
}
public static void swap(Employee x,Employee y) {
Employee temp;
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(String n,double s) {
name = n;
salary = s;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public void raiseSalary(double byPercent) {
double raise = salary * byPercent / 100;
salary += raise;
}
}
/*
Testing tripleValue:
Before:percent=10.0
End of method:x=30.0
After:percent=10.0
Testing tripleSalary:
Before:salary=50000.0
End of mehod:salary=150000.0
After:salary=150000.0
Testing swap:
Before:a=Alice
Before:b=Bod
End of method:x=Bod
End of method:y=Alice
After:a=Alice
After:b=Bod
*/