質問: hikaku でなくて moji.equals(hikaku)でないとダメなのでしょうか? 仕様やオブジェクト指向だからでなく、具体的な理由が知りたいです。 数年後には理解できるかもしれませんので難しくても構いません。
回答: equals() が内容の比較をすると決まっているわけではなく、各クラスで「うまいこと」再定義されているという方が正確だと思います。 放っておいたら、object#equals() がそのまま使われて、これは参照値の比較ですよね。 要は演算子 == が java で再定義できず、一般的な規約としては「参照値の比較です」と == を定義するしかしょうがなかったんだと思います。 == をプログラマが再定義できれば、わざわざ equals() などという演算子を別建てで用意する意味はないと思います。