�The method clone for class Object performs a specific cloning operation. First, if the class of this object does not implement the interface Cloneable, then a CloneNotSupportedException is thrown. Note that all arrays are considered to implement the interface Cloneable. Otherwise, this method creates a new instance of the class of this object and initializes all its fields with exactly the contents of the corresponding fields of this object, as if by assignment; the contents of the fields are not themselves cloned. Thus, this method performs a "shallow copy" of this object, not a "deep copy" operation.�
I am not clear, How to do �shallow copy� and �deep copy�? [ May 25, 2006: Message edited by: Chetan Parekh ]
In simplest say, in the shallow copy, objects within the array will not be cloned. Only the array object is cloned. When an array object is cloned, the duplicate array object will have same references to objects as in original array.
In deep cloning, each object in the array will be cloned including array object. Both array objects (original and cloned) will have different references to the objects. You need to write code for implementing deep copy like what Jeff Albertson has given.
But shallow copy does not hold good for array of primitive types.