私はJava 6の認定書を読んでいました.そして、「シャドウ変数」に関する例がありました:
package scjp;
class Class1 {
int number = 28;
}
public class Example {
Class1 myClass = new Class1();
void changeNumber( Class1 myClass ) {
myClass.number = 99;
System.out.println("myClass.number in method : " + myClass.number);
myClass = new Class1();
myClass.number = 420;
System.out.println("myClass.number in method is now : " + myClass.number);
}
public static void main(String[] args) {
Example example = new Example();
System.out.println("myClass.number is : " + example.myClass.number );
example.changeNumber( example.myClass );
System.out.println("After method, myClass.number is : " + example.myClass.number);
}
}
そして、これは結果です:
myClass.number is : 28
myClass.number in method : 99
myClass.number in method is now : 420
After method, myClass.number is : 99
私の質問は次のとおりです。変数「番号」が最初に 28 の場合、メソッドを使用すると、変数が 99 と 420 に変更されます。しかし、メソッドが終了すると、変数「番号」はなぜ28 の代わりに 99 の値? 元の値(28)を持つと思いました。