public class DrumKitTestDrive {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Echo e1 = new Echo();
Echo e2 = new Echo();
// **e2 = e1;**
int x=0;
while( x < 4 ){
e1.hello();
e1.count = e1.count + 1;
if(x==3){
e2.count = e2.count + 1;
}
if(x>0){
e2.count = e2.count + e1.count;
}
x = x + 1;
}
System.out.print(e2.count);
}
}
class Echo {
int count = 0;
void hello(){
System.out.println("Hellooooo....");
}
}
此代码的输出将是:
Hellooooo....
Hellooooo....
Hellooooo....
Hellooooo....
10
但是,如果我在运行代码时删除注释,// e2= e1;
系统将打印24而不是10。我不明白为什么会这样?
我的理解是系统只会将实例的值复制e1
到e2
实例中。如果系统会这样做,结果将保持不变,因为两个对象属于同一类。