我对 Java 中传递给方法的信息有点困惑。我目前正在 Oracle 网站上学习 Java 基础知识,虽然我理解的大部分内容没有问题,但有些内容对我来说还不够清楚。
https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html
这就是我有疑问的地方。当他们编写以下代码时...
public void moveCircle(Circle circle, int deltaX, int deltaY) {
// code to move origin of circle to x+deltaX, y+deltaY
circle.setX(circle.getX() + deltaX);
circle.setY(circle.getY() + deltaY);
// code to assign a new reference to circle
circle = new Circle(0, 0);
}
circle = new Circle(0, 0);
是什么意思?是创建一个新的 Cicle 对象还是什么?我认为让我困惑的是如何在方法声明中使用对象参数。
有人可以清楚地向我解释传递引用数据类型是什么吗?
最佳答案
从一个更简单的例子开始:
public class Main {
public static void main(String... args) {
int x = 7;
add(x);
System.out.println(x);
}
public static void add(int y){
y = 10;
}
}
您希望这段代码打印出什么?
它打印出7,因为即使我们重新分配add()
函数接收到的参数,这也不会影响传递的原始值进入函数。 main()
方法中的 x 变量仍然是 7。
示例代码只是向您展示了一个使用对象而不是基元的更复杂的示例。您应该学到的教训是,在函数中重新分配参数不会影响其原始值。
关于java - 对参数传递感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30242789/