В Яве реализована следующая дисциплина передачи параметров по умолчанию:
1. Элементарные типы данным передаются по значению. Это те же самые типы, что и в С++.
2. Объектные типы ВСЕГДА передаются по ссылке.
Программист этим не управляет.
Кроме того, надо смотреть методы сравнения - в каких-то вариантах сравниваются тоже ссылки, а не сами объекты (просто подробностей не помню - надо документацию смотреть)