Призрачно все в этом мире бушующем. Кроме java.lang.String, например
Особенности оберток. Царь ненастоящий или просто immutable?
Простенький код, показывающий что происходит при передаче объекта типа String (или Integer) в метод. В комментариях в коде - результат из консоли.
Как видите, с объектами типа String и Integer ничего не происходит, они возвращаются из метода в первозданном виде, как будто ничего и не было. В отличие от объекта типа java.lang.StringBuffer, который продался врагу и притащил домой заразу изменил свое значение.
Дело в том, что String и Integer представляют собой т.н. неизменяемые объекты Java, после их создания значение остается константой. А StringBuffer - не является immutable (неизменяемым), его значение подвержено изменениям, например, если передать его в метод, как в коде выше, он вернется с другим значением.
Более того, вы сами вполне можете спроектировать и создать жава-объект как неизменяемый. Для этого есть определенные правила, я напишу о них в следующем посте.
С уважением,
@antabis