What happens when an object is assigned to another object

Viewed 47531
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....");
    }
}

The output of this code will be:

Hellooooo....
Hellooooo....
Hellooooo....
Hellooooo....
10

But if I remove the comments from // e2= e1; when I run the code the system will print 24 instead of 10. I don't understand why is it so?

What I understand is the system will just copy the values of e1 instance into e2 instance. And if the system will do so, the result shall remain the same because both objects are of the same class.

4 Answers

Try creating constructor for method Echo, with another object as parameter. And assign values of parameter object to this object. i.e. '''

Echo(Echo echo) {
  this.count = echo.count;
}

'''

And then create the node e2 as:

Echo e2 = new Echo(e1);
Related