The book Effective Java and other sources provide a pretty good explanation on how and when to use the readObject() method when working with serializable Java class
readResolve can be used to change the data that is serialized through readObject method. For e.g. xstream API uses this feature to initialize some attributes that were not in the XML to be deserialized.