title: examples of shallow and deep copy demonstration in java
body: <pre><code>// shallow copy example
  public class a
  {
      public static void main(String[] args) throws CloneNotSupportedException
      {
          b x = new b(2);
          System.out.println(x.i[0]); // previous value for object x
          System.out.println(x.k);
          b y =(b)x.clone(); // y shallow clone of object x
          y.i[0] = 10; y.k = 999; // changed values in object y
          System.out.println(y.i[0]); // values of y after change
          System.out.println(y.k);
  
          System.out.println(x.i[0]); // values of x after change     
          System.out.println(x.k);
          System.out.println(x.getClass() == y.getClass()); // both objects belong to same class
          System.out.println(x == y); // both objects are different, they are not the same
      }
  }
  
  class b implements Cloneable
  {
      public int i[] = new int[1];
      int k;
  
      public Object clone() throws CloneNotSupportedException
      {
          return super.clone();
      }
  
      b(int j)
      {
          super();
          i[0] = j;
          k = j + 2;
      }
  }
  
  /*output
  
  2
  4
  10
  999
  10
  4
  true 
  false
  */
  //*********************************************************************
  //deep copy example
  
  public class a
  {     
      public static void main(String[] args) throws CloneNotSupportedException 
      {  
          b x = new b(2);
          System.out.println(x.i[0]); // object x values before change
          System.out.println(x.k);
  
          b y = (b)x.clone(); // deep clone y of object x
  
          System.out.println(y.i[0]); // values of object y
          System.out.println(y.k);
  
          System.out.println(x.i[0]); // values of object x after changing the values of the members in object y in clone method  
          System.out.println(x.k);
          System.out.println(x.getClass() == y.getClass());
          System.out.println(x==y);
      }
  }
  
  class b implements Cloneable
  {
      public int i[] = new int[1];
      int k;
  
      public Object clone()throws CloneNotSupportedException
      {
          b t = new b(6);
          return t;
      }
  
      b(int j)
      {
          i[0] = j;
          k = j+2;
      }
  }
  
  /*
  
  2
  4
  6
  8
  2
  4
  true 
  false
  */
  </code></pre>
  
  <p>I have already written the examples please see if I left out anything.I have to give a demo regarding it and wanted it to be as simple as possible.Do let me know if I can make it even simpler.
  I have provided quotes wherever they changed values or object was being cloned.</p>