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