Java中只有按值传递,没有按引用传递。java
基本类型传递的是值的副本;函数
引用类型传递的是引用的副本。rest
基本类型就不说了,主要看看对象作参数的状况。code
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 = "我变了"; } }
输出:我变了对象
由于传递的是引用的副本,也就是说在函数里面把引用指向的真实对象变了,函数外面的引用仍是指向原先的对象。class
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引用
看结果就很好理解了。static