Re: so wrong
That's not a quirk - you need to understand the difference between instance (or reference) and logical equality. Each instance of a class is inherently unique, so == should almost only ever be used on primitive types. C++ makes a mess of this by allowing operator overloading so that reference and logical equality often become confused, a quirk - of C++ - that Java's designers were at pains to avoid.