есть идентичность по имени (которое в данном случае - адрес в памяти), а есть идентичность по содержимому (рекурсивное равенство всех данных).
первая - как правило бесполезна. редко когда нужно отличать объекты с одинаковым содержимым.
вторая же наоборот как правило и нужна, но по неведомой мне причине, реализуется через костыли типа a.equal(b)
по хорошему оператор == должен проверять именно идентичность данных, а не проверять через десяток эвристик: если оба объекты - сравниваем по имени, если один из них строка - сравниваем "строковые представления" (которые у разных объектов либо отражают содержимое, либо лишь принадлежность к классу), если один из них число - сравниваем "примитивные значения".
__________________
.ня
|