• Java中的值传递和引用传递


    java 中没有引用传递,都是值传递的,可以通过传递副本修改对象的,副本交换,并不影响原引用



    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 中的值传递和引用传递
    	http://www.cnblogs.com/clara/archive/2011/09/17/2179493.html
    	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对象内容改变
    
    	}
    }
    

      

  • 相关阅读:
    topcoder srm 495 div1
    topcoder srm 500 div1
    topcoder srm 485 div1
    topcoder srm 490 div1
    IDEWorkspaceChecks.plist文件是干什么用的?
    博客推荐
    如何使用U盘安装macOS high Sierra?
    小程序--模板消息调研
    小程序--剖析小程序上传文件
    小程序--小程序开发过程中遇到的问题以及解决方案
  • 原文地址:https://www.cnblogs.com/mynona/p/3345870.html
Copyright © 2020-2023  润新知