Java中只有按值传递,没有按引用传递。
基本类型传递的是值的副本;
引用类型传递的是引用的副本。
基本类型就不说了,主要看看对象做参数的情况。
public class Main {
public static void main(String[] args) {
Record record = new Record();
record.name = "interesting";
f(record);
System.out.println(record.name);
}
public static void f(Record x) {
x.name = "我变了";
}
}
输出:我变了
因为传递的是引用的副本,也就是说在函数里面把引用指向的真实对象变了,函数外面的引用还是指向原先的对象。
public class Main {
public static void main(String[] args) {
Record record = new Record();
record.name = "interesting";
f(record);
System.out.println(record.name);
}
public static void f(Record x) {
x = new Record(); //改变这个引用指向的对象
x.name = "我变了";
}
}
输出:interesting
看结果就很好理解了。