Java has quite a few ways to compare types of objects. Most well know are:
The logic of the first two can be quite easily inferred based on the names. But the last one needs a bit of thinking to completely interpret it. So how to understand it once and forever?