1  import java.awt.Rectangle;
  2  
  3  /**
  4     This example demonstrates the difference between copying
  5     numbers and object references.
  6  */
  7  public class CopyDemo
  8  {
  9     public static void main(String[] args)
 10     {
 11        // Declare two object variables and copy the first into the second
 12  
 13        Rectangle box = new Rectangle(5, 10, 20, 30);
 14        Rectangle box2 = box;
 15        
 16        // Both variables refer to the same object
 17  
 18        System.out.print("box: ");
 19        System.out.println(box);
 20        System.out.print("box2: ");
 21        System.out.println(box2);
 22  
 23        System.out.println("Mutating box2");
 24        box2.translate(15, 25);
 25  
 26        // Both variables refer to the mutated object
 27  
 28        System.out.print("box: ");
 29        System.out.println(box);
 30        System.out.print("box2: ");
 31        System.out.println(box2);
 32  
 33        // Declare two number variables and copy the first into the second
 34  
 35        int luckyNumber = 13; 
 36        int luckyNumber2 = luckyNumber; 
 37  
 38        System.out.print("luckyNumber: ");
 39        System.out.println(luckyNumber);
 40        System.out.print("luckyNumber2: ");
 41        System.out.println(luckyNumber2);
 42        
 43        System.out.println("Changing luckyNumber2");
 44        luckyNumber2 = 12;
 45  
 46        // Only the second number changes.
 47  
 48        System.out.print("luckyNumber: ");
 49        System.out.println(luckyNumber);
 50        System.out.print("luckyNumber2: ");
 51        System.out.println(luckyNumber2);
 52     }
 53  }
 54  
 55  
 56