gpt4 book ai didi

Java 按值传递理解

转载 作者:行者123 更新时间:2023-12-02 07:46:45 25 4
gpt4 key购买 nike

我想我明白它是传递给方法tricky()的对象/数据成员的副本,因为只有值才是重要的,而不是实际的对象本身。但 print 语句向我保证,arg1arg2(副本)确实在方法内进行了切换。我不明白为什么这不会将信息转发回原始对象,从而切换它们;看来该方法能够成功访问方法内的 arg1.xarg1.y 数据成员。

// This class demonstrates the way Java passes arguments by first copying an existing
// object/data member. This is called passing by value. the copy then points(refers)
// to the real object

// get the point class from abstract window toolkit
import java.awt.*;

public class passByValue {


static void tricky(Point arg1, Point arg2){

arg1.x = 100;
arg1.y = 100;
System.out.println("Arg1: " + arg1.x + arg1.y);
System.out.println("Arg2: " + arg2.x + arg2.y);

Point temp = arg1;
arg1 = arg2;
arg2 = temp;
System.out.println("Arg1: " + arg1.x + arg1.y);
System.out.println("Arg2: " + arg2.x + arg2.y);
}




public static void main(String [] args){

Point pnt1 = new Point(0,0);
Point pnt2 = new Point(0,0);
System.out.println("X1: " + pnt1.x + " Y1: " +pnt1.y);
System.out.println("X2: " + pnt2.x + " Y2: " +pnt2.y);
System.out.println(" ");
tricky(pnt1,pnt2);
System.out.println("X1: " + pnt1.x + " Y1:" + pnt1.y);
System.out.println("X2: " + pnt2.x + " Y2: " +pnt2.y);

}
}

最佳答案

对象引用被复制,复制的引用仍然指向内存中的同一个对象。这就是为什么您可以使用复制的引用来更改对象。但是,修改参数引用会修改副本,而不是原始引用。这就是为什么在方法内重定向引用不会重定向您传入的引用。

希望这能解决问题。

关于Java 按值传递理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11623482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com