java 对象

实现一个改变对象参数状态的方法并不是一件难事。理由很简单,方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。

很多程序语言提供了两种参数传递的方式:值调用和引用调用。有些程序员认为Java对对象采用的是引用调用,实际上,这种理解是不对的。

 

总结一下Java语言中,方法参数的使用情况:

1.一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)

2.一个方法可以改变一个对象参数的状态

3.一个方法不能实现让对象参数引用一个新的对象。

 

public class ParamTest{

/*
*方法不能修改数值参数
*/

 public static void main(String[] args){
   System.out.println("Testing tripleVale:");
   double percent = 10;
   System.out.println("Before percent ="+percent );
   tripleVale(percent);
   System.out.println("After percent =" + percent );
 }

/*
*方法能改变参数状态
*/
  System.out.println("\nTesting tripleSalayr:");
  Employee harry = new Employee("Harry",5000);
  System.out.println("Before:salary=" + harry.getSalary);
  tripleSalary(harry);
  System.out.println("After:salary" + harry.getSalary);          

/*
*方法不能attach新的对象至原对象参数
*/
  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 b=" + b.getName());
}

public static void tripleVale(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: x=" + 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 {
  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;
        salary+=raise;    
    }
    private String name;
    private double salary;
}

个人感觉,是因为没有使用方法的返回值,因为没有方法的返回值,所以调用后值没有变化,只是状态发生了变化。

posted @ 2017-03-16 17:13  琴声清幽  阅读(140)  评论(0编辑  收藏  举报