- /*=============================================================================
- # FileName: ParamTest.java
- # Desc: 这个例子说明了在java当中过程参数,就算是传递的是引用,也是按照值传递的方式来进行的
- # Author: BarneyX
- # Email: vcmsdn@gmail.com
- # Version: 0.0.1
- # LastChange: 2016-01-04 10:22:16
- # History:
- =============================================================================*/
- 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 parameter
- * */
- 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 attch new objects to object paramets
- * */
- System.out.println("\nTesting swap");
- Employee a = new Employee("Alice",70000);
- 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:a="+a.getName());
-
- }
-
- public static void tripleValue(double x){
- 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 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: x="+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;
- }
- }
- /*************************************************
- C:\Windows\system32\cmd.exe /c (java ParamTest)
- Testing tripleValue
- Before: percent=10.0
- End of method: x=30.0
- After: percent=10.0
- Testing tripleSalary:
- Before:salary=50000.0
- End of method: salary=150000.0
- After:salary=150000.0
- Testing swap
- Before:a=Alice
- Before:b=Bob
- End of method: x=Bob
- End of method: x=Alice
- After:a=Alice
- After:a=Alice
- Hit any key to close this window...
- **************************************************/