Вам необходимо понять разницу между переменными и объектами .
Рассмотрим этот код:
String x = "hello";
for (int i = 0; i < 10; i++) {
x = x + i;
}
В результате будет создано 11 строк объектов , но задействованы только две переменные (x
и i
). В любой момент значение из i
является целым числом (0-10), а значение из x
является ссылкой на String
. (Это также может быть null
, но в данном примере это не так.)
Важно понимать, что x
не является объектом, а также значение из x
не является объектом.
Если это помогает думать об этом в физическом смысле, рассмотрите лист бумаги с моим домашним адресом:
- Лист бумаги похож на переменную - это «где-то значение может быть сохранено».
- Адрес, написанный на листе бумаги, похож на ссылку - это способ найти объект
- Сам дом похож на объект.
Ни листок бумаги, ни адрес не являются самим домом. Если вы стираете адрес на бумаге и вместо этого пишете другой адрес, это не вносит никаких изменений в мой дом - точно так же, как изменение значения x
не вносит никаких изменений в сами строковые объекты в моем примере код.