posted 18 years ago
Java performs shallow copies by default. Suppose you have an object, say, Thingamajig, with an instance member object called Thingy. Every Thingamajig object of course has a reference to its Thingy. You can make as many references as you like to the same Thingamajig object:
Both object references t1 and t2 point to the same object, not duplicate objects. Furthermore, both t1 and t2 also have access to the same Thingy object. This is shallow copying.
Deep copying happens when you create identical objects with the same state. If I make a deep copy of the object Thingamajig referred to by t1, I must make a separate instance of its Thingy object, as well as any other objects that the Thingy object itself may have internally, and so on recursively.
Here's a sample code;