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对象内容改变
    
    	}
    }
    

      

  • 相关阅读:
    elemenui数据表格加入计数器和输入框
    递归求阶乘
    递归累和
    递归
    file类
    Object类
    首页背景图
    异常的处理
    数据结构有什么用?常见的数据结构有什么?
    线程、并发、并行、进程是什么,以及如何开启新的线程?
  • 原文地址:https://www.cnblogs.com/mynona/p/3345870.html
Copyright © 2011-2022 走看看