我正在阅读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
我的问题是:如果一开始,变量'number'是28。当我使用该方法时,它会将变量更改为99和420。但是......,当方法完成时,为什么变量'number'有值 99 而不是 28 ?我认为它将具有其原始价值(28)。