samwellwang

samwellwang

coder
twitter

Java 是值传递还是引用传递

Java 到底是™值传递还是引用传递今天写代码的时候发现个有趣的事儿, 就是我传两个一个引用对象给一个转换函数。

2020-03-30

Java 到底是™值传递还是引用传递#

今天写代码的时候发现个有趣的事儿, 就是我传两个一个引用对象给一个转换函数。结果的我的函数没有生效!!刚开始以为没编译的问题,
clean 之后还是不行。来来回回快一个小时了,真滴是气煞我也。难道说不是一直以为的地基本参数类型传值,引用类型传引用么?经过一番学习得知,果然是不要我以为的,要 Java 规范以为的啊!

废话不多说,先上结论:妥妥滴值传递!
基本类型就不多说了,传的是基本类型的副本,
但是注意对于引用类型,传的是引用地址的副本。
上代码:

package com.dareway.demo;

public class Person{
	public String name;
	public int age;
	Person(){
		
	}
	Person(String n ,int a){
		this.name=n;
		this.age=a;
	}
}

public class Test{

	public static void main(String[] args) {
		Person one = new Person("wang",22);
		Person two = new Person("yang",23);
		switchEach(one,two);
		System.out.println("one's name :"+one.name);
		System.out.println("two's name :"+two.name);
		
	}

输出结果:

p1's name :yang
one's name :Jisoo
two's name :yang

也就是说,传递的引用参数,可以改变内部的状态,但是不能指向一个新的地址。因为复制的只是应用地址的拷贝。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。