Во-первых, нужно помнить, что строковые литералы в Java - это, фактически, объекты (String). При этом, если в программе несколько раз встречается один и тот же строковый литерал, то ему будет соответствовать один и тот же объект. Поэтому во втором случае strA == strB (и, соответственно, выводится false).
Во-вторых, нужно помнить, что строки (String) в Java - это неизменяемые объекты. Поэтому, когда к объекту strA "приклеивается" другая строка (strA += "1"), на самом деле создаётся новый объект, содержащий "text1". И когда приклеиваем к объекту strB - создаётся ещё один (другой!) объект, также содержащий "text1". Следовательно, strA != strB, и в первом случае выводится true.
Фактически, команда strA += "1" разворачивается в strA = new StringBuilder().append(strA).append("1").toString();
И если это выполнится два раза, то получится два разных объекта, пусть и с одинаковым содержимым.
Войдите чтобы поставить Нравится
Войдите чтобы прокомментировать