Java Core trainee
== vs equals для строк?
Ответ
== сравнивает ссылки. equals — содержимое. Из-за String Pool два литерала "abc" == "abc" дадут true, но new String("abc") == "abc" — false (new создаёт новый объект вне пула). На собесе всегда отвечать «equals для содержимого».
Разбор: == всегда сравнивает ссылки (один ли это объект в памяти), а equals у String переопределён на посимвольное сравнение содержимого. Ловушка в String Pool: литералы интернируются и дают true по ==, но new String() и рантайм-конкатенация создают новый объект вне пула, поэтому == для них вернёт false.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.