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在方法之后有任何分配给它的东西。我认为方法的范围保持在方法内;因此,在递增(y)退出后,x的值保持不变。
如果我错了,请纠正我,因为我对编程很新。
谢谢!
答案 0 :(得分:2)
如果增量方法改变了y的值,那么z的值也改变了吗?
这取决于y
的更改方式:如果方法为y
分配了一个新值,z
保持不变,因为Java中的参数是按值传递的,包括对象引用。另一方面,如果该方法改变了int
内部的var
int
对象,那么z
内的y
也会发生变化,因为那是与x
相同的对象。
increment
将更改为{{1}}方法返回的任何内容。
答案 1 :(得分:0)
z
将保持不变。这是因为程序顺序运行。将y
分配到z
后,y
中的任何更改都不会影响z
。
对于x
,它将等于increment(y)返回的任何内容。
答案 2 :(得分:0)
在方法内声明的变量,具有方法范围。您需要了解类和对象的概念。当你执行var x = new var(1)时,你可以从var类创建一个对象,而x只是对该对象的引用。与y相同,当您将y指定给z时,实际上您正在使z指向y所指的同一对象。