Java 中透過引用傳遞與透過值傳遞


按值呼叫表示使用引數值來呼叫某個方法。透過這種方式,將引數值傳遞給該引數。

而按引用呼叫表示使用引數引用來呼叫某個方法。透過這種方式,將引數引用傳遞給該引數。

在按值呼叫中,對傳遞的引數所作出的修改不會反映在呼叫者的作用域裡,而按引用呼叫中,對傳遞的引數所作出的修改是永久的,其變化會反映在呼叫者的作用域裡。

但 Java 只使用按值呼叫。它會建立引用副本,並將它們作為值傳遞給方法。如果引用包含物件,則可以在方法中修改物件值,但不能修改整個物件。 

示例

即時演示

public class Tester {
   public static void main(String[] args) {
      Point point = new Point();
      System.out.println("X: " +point.x + ", Y: " + point.y);
      updatePoint(point);
      System.out.println("X: " +point.x + ", Y: " + point.y);
   }
   public static void updatePoint(Point point) {
      point.x = 100;
      point.y = 100;
   }
}
class Point {
   public int x, y;
}

輸出

X: 0, Y: 0
X: 100, Y: 100

更新於:2020 年 2 月 25 日

5K+ 次瀏覽

開啟你的 職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.