Leggendo online mi sembra di capire che, al momento dell'assegnazione, i tipi primitivi di dati sono passati per valore mentre gli oggetti (istanze delle classi) per riferimento.

Però ad esempio le stringhe (oggetti della classe String) sono passate per valore. Come so quando il contenuto di un oggetto lo posso passare per valore o meno?

Grazie.