传递分为值传递和引用传递:
传递方式 | 原始参数 | |
值传递 | 将值复制一份进行传递 | 修改无法影响原始参数 |
引用传递 | 实际参数的引用 | 会影响原始参数 |
Java的基本数据类型的包装类和String 他们是不可变对象,都是使用值传递
传递对象时,传递的是实际参数的引用,这并不属于引用传递,举个例子:
public class Main {
public static void main(String[] args) {
Person a = new Person();
a.name = "a";
change(a);
System.out.println("a name = " + a.name);
}
static void change(Person p){
p = new Person();
p.name = "p";
System.out.println("p name = " + p.name);
}
}
class Person {
public String name;
}
运行结果为
p name = p
a name = a
如果为引用传递,a name应为p,所以传递对象也是值传递