littleString
не передает объект обратно - он просто использует тот же объект. И локальная переменная bob
в bigString()
, и параметр bob
в littleString()
относятся к одному и тому же объекту, поэтому, если вы измените один из этих объектов, изменения мгновенно появятся в другом , потому что они ' обе ссылки на один и тот же объект .
Проблема в том, что StringBuffer
являются изменяемыми и имеют внутреннее состояние, связанное с ними. Некоторые типы объектов (например, String
s) являются неизменяемыми, поэтому вы можете безопасно передавать их как параметры метода, и вы знаете, что они никогда не будут изменены. Обратите внимание, что добавление ключевого слова final
здесь не помогает - оно просто гарантирует, что bob
никогда не будет назначено обращение к другому объекту StringBuffer
.