The hashCode() method provides a semi-unique identifier for an object, useful in various sorting and searching algorithms. If you've used the Hashtable or HashMap classes, then you've relied on your key objects having sensible hashCode() methods.
To follow up on that, two objects that are equals must also have the same hashcode. As Ernest pointed out, the hash codes can be used in HashMaps and HashSets. What happens is that if you tell a HashSet to look for an object, it hashes the object you tell it to look for and then finds if it has an object with the same hashcode. Then it checks if they are equals. This way it doesn't have to check equals (which could be expensive) on every object in the set.
As I stated above, two equals objects must have the same hashcode, but just because two objects have the same hashcode does not mean they are equal. A good hashcode function distributes objects evenly across different hash "buckets." Do some searching on Google and I'm sure you will find more information.