почему `a1 == a1;` возвращает true?

Я знаю, что == сравнивает ссылки.

А equals сравнивает контент.

Почему "a1" == "a1"; возвращает true?

В конце концов, это другой экземпляр, если строка. нет?


person Elad Benda2    schedule 24.12.2014    source источник
comment
Принятый ответ охватывает этот случай.   -  person Luiggi Mendoza    schedule 24.12.2014
comment
взгляните на stackoverflow.com/questions/18636561/   -  person Parth Soni    schedule 24.12.2014
comment
дубликат: stackoverflow.com/questions/3052442/   -  person Joeblade    schedule 24.12.2014
comment
Если это неясно, Java интерпретирует строковые литералы, поэтому в вашем коде два строковых литерала фактически являются одним и тем же объектом. Если бы вы изменили его на «new String (a1) = a1;» тогда это было бы ложно.   -  person Charles Goodwin    schedule 24.12.2014