你學過C或者C++嗎?這兩個概念是從C/C++延續過來的,就類似於C裡面的值傳遞和指標傳遞。在java中除了基本型別(Integer/Float/Double等)和String類的物件外,所有的類物件引用都是引用傳遞,也就是傳遞的物件地址。所謂值傳遞就是傳遞的值的複製,而不是原來的值,比如public static void main(String[] args) {int a = 10;int b = 20;int c = add(a, b);System.out.println("a = " + a + ", b = " + b + ", c = " + c);}private static int add(int a, int b) {a = 20;b = 30;return a + b;}輸出:a = 10, b = 20, c = 50這就是所謂值傳遞,在被調方法中改變引數值不會影響主調方法中定義的變數的值如果你將a、b定義為Student類的物件,然後在add方法中改變引數裡面的值,那麼主調方法main中的a、b變數將跟著發生改變,就是所謂引用傳遞
你學過C或者C++嗎?這兩個概念是從C/C++延續過來的,就類似於C裡面的值傳遞和指標傳遞。在java中除了基本型別(Integer/Float/Double等)和String類的物件外,所有的類物件引用都是引用傳遞,也就是傳遞的物件地址。所謂值傳遞就是傳遞的值的複製,而不是原來的值,比如public static void main(String[] args) {int a = 10;int b = 20;int c = add(a, b);System.out.println("a = " + a + ", b = " + b + ", c = " + c);}private static int add(int a, int b) {a = 20;b = 30;return a + b;}輸出:a = 10, b = 20, c = 50這就是所謂值傳遞,在被調方法中改變引數值不會影響主調方法中定義的變數的值如果你將a、b定義為Student類的物件,然後在add方法中改變引數裡面的值,那麼主調方法main中的a、b變數將跟著發生改變,就是所謂引用傳遞