Array of Objects in Java

Please help me with this below code.
I have three questions regarding array of objects that I have underlined below.

class ABC{

  int a,b;

  public static void main(String[] args){

  ABC obj1 = new ABC();  // LINE-1

  ABC obj[] = new ABC[5];  // LINE-2 

  obj[0] = new ABC();

  obj[1] = new ABC();

} 

}

After execution of LINE-1, memory allocation will be done for obj1 and reference will be assigned to obj1.

After execution of LINE-2 what will be stored in obj? Why do we have to re-allocate the memory for each and every object that we’ve created through LINE-2.Because that was not the case in C++.In C++ what was happening that If we’re creating an Array of objects through new operator then there is no need to re-allocate the memory for each and every object.

Capture1

and my third question is, If we’re re-allocating the memory for every object then will they be contiguous in memory?

class demo

{

int a, b;

demo()

{

a = 10 ;

b = 20 ;

}

public void print()

{

System.out.println ( "a = " + a + " b = " + b + "n" );

}

}

class Test

{

public static void main(String[] args)

{

demo obj1 = new demo();

demo obj2 = obj1;

obj1.a += 1 ;

obj1.b += 1 ;

System.out.println ( "values of obj1 : " );

obj1.print();

System.out.println ( "values of obj2 : " );

obj2.print();

}

}

@ kindly read the question first before replying