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+ 次浏览

开启你的 职业生涯

完成课程并获得认证

开始
广告