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