-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割り当てる場合、Javaのパラメーターはオブジェクト参照を含む値によって渡されるため、変更されません。一方、メソッドがオブジェクトの内部を変更すると、それと同じオブジェクトであるため、内部も変更されます。yzint varintzy

x一方、incrementメソッドが返すものに変更されます。

于 2013-03-24T02:03:20.103 に答える
0

z変更されません。これは、プログラムが順番に実行されるためです。の変更にy割り当てられた後は影響しません。zyz

それに関してxは、increment(y)によって返されるものは何でも等しくなります。

于 2013-03-24T02:02:55.930 に答える
0

メソッド内で宣言された変数には、メソッド スコープがあります。クラスとオブジェクトの概念を理解する必要があります。var x = new var(1) を実行すると、var クラスからオブジェクトが作成され、x はそのオブジェクトへの単なる参照になります。y と同じで、y を z に代入すると、実際には z が y が参照している同じオブジェクトを参照するようになります。

于 2013-03-24T02:07:57.620 に答える