-4
private int myInt;

public var(int a)
myInt = a;

var x = new var(1)
var y = new var(5)
var z = y;
x = increment(y)     // where the increment method increments y by 1.

如果增量方法改变了 y 的值,那么 z 的值是否也改变了?在我的书中,当 y 被改变时,z 也被改变了,但是,如果在调用 increment 方法之前 z 已经分配给 y 怎么可能呢?我也不明白为什么 x 在方法之后分配了任何东西。我认为方法的范围保持在方法之内;因此在 increment(y) 退出后,x 的值保持不变。

如果我错了,请纠正我,因为我对编程相当陌生。

谢谢你!

4

3 回答 3

2

如果增量方法改变了 y 的值,那么 z 的值是否也改变了?

这取决于y更改的方式:如果方法分配y了新值,则z保持不变,因为 Java 中的参数是按值传递的,包括对象引用。另一方面,如果方法改变了对象的int 内部var,那么int内部z也会改变,因为它与y.

x另一方面,将更改为increment方法返回的任何内容。

于 2013-03-24T02:03:20.103 回答
0

在方法内部声明的变量,具有方法范围。您需要了解类和对象的概念。当您执行 var x = new var(1) 时,您从 var 类创建了一个对象,而 x 只是对该对象的引用。与 y 相同,当您将 y 分配给 z 时,您实际上是在使 z 引用 y 所引用的同一对象。

于 2013-03-24T02:07:57.620 回答
0

z将保持不变。这是因为程序按顺序运行。y分配给之后的z任何更改y都不会影响z

至于x它将等于增量(y)返回的任何内容。

于 2013-03-24T02:02:55.930 回答