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
廣告