【发布时间】:2013-01-28 13:29:31
【问题描述】:
我正在阅读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)。
【问题讨论】:
-
很明显的事情,我建议你从 OOP 开始。
-
先生,我不像您那样是专家。不过谢谢你的回答。