zoukankan      html  css  js  c++  java
  • 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对象内容改变
    
    	}
    }
    

      

  • 相关阅读:
    c# 文件上传
    iOSswift基础篇1
    copyWithZone 的使用方法
    客户端登陆接收大量数据导致数据丢失问题解决方法
    设计模式观察者模式(KVO)
    SQLite 之 C#版 System.Data.SQLite 使用
    设计模式MVC(C++版)
    JS 创建自定义对象的方法
    手机号、邮箱、身份证号 格式 验证
    在.cs文件中添加客户端方法
  • 原文地址:https://www.cnblogs.com/mynona/p/3345870.html
Copyright © 2011-2022 走看看