Zuweisung in Java?

Sag ich setze int A = int B. Wenn ich A danach ändere, ändert sich der Wert von B. Wenn ich jedoch SomeClass A = SomeClass B setze und den Inhalt von A ändere (wie a.cost), ändert sich der Wert B. auch kosten. Kann mir das jemand erklären?

Ich dachte, Java wird nach Wert zugewiesen, nicht nach Referenz?