Putting it simply, 1. == uses opEquals. If you don't supply opEquals, the compiler will make one for you. 2. AAs use ==. See rule 1. Easy to understand, easy to explain, easy to document.