Java中的值传递和引用传递实例介绍

时间:2022-03-30 08:57:44

代码如下:


package Object.reference; 
public class People { 
    private String name; 
    private int age; 
    public People(){ 
    } 
    public People(String name, int age) { 
        super(); 
        this.name = name; 
        this.age = age; 
    } 
    public String toString(){ 
        return "name:" + name + " age:" + age; 
    } 
    public String getName() { 
        return name; 
    } 
    public int getAge() { 
        return age; 
    } 
    public void setName(String name) { 
        this.name = name; 
    } 
    public void setAge(int age) { 
        this.age = age; 
    } 

 

复制代码代码如下:


package Object.reference; 
/*  java 中的值传递和引用传递 
    //www.zzvips.com/
    java 中没有引用传递,都是值传递的 
*/
public class Test { 
    public static void swap(People a, People b, boolean flag) { 
        if (flag) { 
            // 可以通过传递副本修改对象的值 
            a.setName("changeName"); 
            a.setAge(100); 
        } else { 
            //副本交换,并不影响主程序的指针 
            People c = a; 
            a = b; 
            b = c; 
        } 
    } 
    public static void main(String[] args) { 
        People p1 = new People("yingjie", 23); 
        People p2 = new People("yuexin", 20); 
        swap(p1, p2,false);//传递的是p1,p2的副本,函数调用前后p1,p2没任何改变 
        swap(p1, p2,true);//传递的是p1,p2的副本,可以通过传递副本修改对象的值,函数调用前后p1对象内容改变 
    }