Java 到底是™值传递还是引用传递今天写代码的时候发现个有趣的事儿, 就是我传两个一个引用对象给一个转换函数。
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
也就是说,传递的引用参数,可以改变内部的状态,但是不能指向一个新的地址。因为复制的只是应用地址的拷贝。