в Java, я создал 2 строковых литералов, имеющих одинаковое значениекак Java обрабатывает строковые литералы
String a = "Hello";
String b = "Hello";
теперь оба они должны иметь ту же ссылку
System.out.println(a==n); // returns true
, но когда я делаю
b+=" World";
System.out.println(a==b); // returns false
Теперь у меня есть 2 вопроса
1. почему a и b не ссылаются на тот же объект после операции «b + =»? 2. как же я в состоянии изменить строку б без ошибок? (Потому что я прочитал класс Строка неизменен)
Этот вопрос задан и ответил сотни раз на SO. Пожалуйста, сначала ищите. –
[Как инициализировать строку с помощью «»?] (Http://stackoverflow.com/questions/17489250/how-can-a-string-be-initialized-using/17489410#17489410) –
Возможный дубликат [Java String Pool] (http://stackoverflow.com/questions/2486191/java-string-pool) или действительно [Как сравнить строки в Java] (http://stackoverflow.com/questions/513832/how-do- i-compare-strings-in-java) среди * multiple * others. –