美文网首页
学习JAVA的函数传递

学习JAVA的函数传递

作者: Y海泉 | 来源:发表于2016-12-05 23:41 被阅读0次

结论:java传递的是值,而不是引用

来看三个程序

package test.example;

public class ParamTest {

    
    public static void main(String args[]){
        
        Employee a =new Employee("Aick");
        Employee b = new Employee("Blick");
        
        swap(a,b);
        System.out.println("a name is "+ a.name);
        System.out.println("b name is "+ b.name);
        
    }
    public static void swap(Employee a,Employee b)
    {
        Employee temp;
        temp = a;
        a = b;
        b = temp;
    }    
}
class Employee{
    double salary;
    String name;    
    public Employee(String name){
        this.salary = 1;
        this.name = name;
    }
}

结果是什么?
a name 还是 Alick
b name 还是Blick
因为是函数传递的是值,所以在swap产生的a,是一个新的引用,这个应用指向a指向的对象,
结束后就丢掉了

int a =1;
int b =1;
swap(a,b);//swap是交换两个数的函数

结果还是不变的

那有方法使他们改变吗?
有对Employ.属性进行访问交换

public void swap(Employee a, Employee b){  
  double temp = a.salary;
  a.salary =b.salary;
  b.salary = a.salary;
  String tempname = a.name;
  a.name =b.name;
  b.name = tempname; 
}

相关文章

网友评论

      本文标题:学习JAVA的函数传递

      本文链接:https://www.haomeiwen.com/subject/xixcmttx.html