改变方法中的变量

时间:2013-03-24 02:00:57

标签: java

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的值保持不变。

如果我错了,请纠正我,因为我对编程很新。

谢谢!

3 个答案:

答案 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所指的同一对象。