Warum ist null == null true in Java?
== ist ein boolscher Operator, dessen Ergebnis nur true oder false sein kann. Hier werden Referenzen auf Gleichheit überprüft, was erlaubt ist. Da es offensichtlich unsinnig ist, dass null == null als Ergebnis false hat oder das Ergebnis vom Kontext abhängig ist, bleibt nur true übrig.
In Scala ist null sogar von einem speziellen Typ, Null, und die einzige Instanz dieses Typs. Im Typenschema von Scala ist der Null-Typ Subtyp von jedem anderen Referenztyp, was die Sache konsistent macht. Von daher vergleicht man in Scala damit sogar Objektreferenzen, nämlich das Null-Objekt mit sich selber, was natürlich true ergeben nuss.