If there is a class called ball

and you newed 2 ball object called ball1 and ball2, during runtime, does JVM give every newed ball object memories respectively (and set their parameters as the programer intended) or does JVM somehow point back to the very original ball class, modify its value to, say ball2, then use it AS ball2, and when finished using, change everything back to ball (the original class)?

Or a little of both?

Also, I hear that

ball ball0 = new ball
ball ball1 = new ball


ball ball[] = new ball[2]


Is this right?