Потому что объект "передается по значению, а не по ссылке".
То, что передается по значению, это его ссылка.Итак, на ваш взгляд, вы думаете, что он передается по ссылке.
Итак, чтобы было ясно, когда вы передаете объект методу, создается новая «ссылка на указатель», и она передается.Поэтому, если вы измените его, ничего не произойдет.
РЕДАКТИРОВАТЬ: Здесь код
Hotel h1 = new Hotel(100); // h1 holds a reference to a Hotel object in memory
System.out.print(h1.getRoomNr() + " ");
Hotel h2 = doStuff(h1); // when doStuff is called, a new reference pointing to the same object is made, but if you change it, nothing will happen
Взгляните на Core Java .Лучшая книга!