Sobes.tech
Back to tasks
Intern — Senior
26

Сравнение строк в Java с учётом интернирования и конкатенации

Get help with live coding in real time with Sobes Copilot
Task condition

Определите, какие из приведённых ниже сравнений строковых ссылок вернут true. При ответе учитывайте, как компилятор обрабатывает строковые литералы, механизм интернирования и особенности конкатенации строк в Java.

var a = "{ между скобок }";
final String b = "{ между ";
String c = "скобок }";
String d = "{ между скобок }";
String e = new String("{ между скобок }");

System.out.println(a == d);                    // №1
System.out.println(a == b + c);                // №2
System.out.println(a == b + "скобок }");      // №3
System.out.println(a == e);                    // №4

Для каждого сравнения объясните, почему полученный результат таков: является ли сравниваемый объект тем же самым объектом в пуле строк, создаётся ли новый объект в результате конкатенации, и как влияет оператор new на интернирование.