class BankAccount
{
   int    ID;
   double balance;
};

public class struct_copy
{
   public static BankAccount a;

   public static void main(String[] argv)
   {
      BankAccount b;
   
      a = new BankAccount( );  // Create the objects
      b = new BankAccount( );

      a.ID  = 123;
      a.balance = 1000.0;
   
      b.ID  = 444;
      b.balance = 3000.0;
   
      System.out.printf("a = (%d, %f)\n", a.ID, a.balance);   
      System.out.printf("b = (%d, %f)\n\n", b.ID, b.balance);
   
      /* ========================
         Copy reference !
         ======================== */
      b = a;
   
      System.out.printf("a = (%d, %f)\n", a.ID, a.balance);   
      System.out.printf("b = (%d, %f)\n\n", b.ID, b.balance);
   
      /* ============================================
         Proof that a and b are the SAME object
         ============================================ */
      a.balance = 999999.0;
   
      System.out.printf("a = (%d, %f)\n", a.ID, a.balance);   
      System.out.printf("b = (%d, %f)\n\n", b.ID, b.balance);
   }
}