Прочел я в объяснениях старших товарищей, что "String s1 = new String("JavaRush") не записывает значение в пул строк, а s1 = "JavaRush" - да"... Нигде я не нашёл подтверждающей это информации, но размышлизмы привели меня к следующим умозаключениям: Что бы мы не раскомментировали, в сравнении equals мы всегда получим true. А вот при ==, когда сравниваются ссылки, результат уже будет зависеть от выбранного варианта. Так вот, если мы раскомментируем третий вариант, то сразу получим новый объект с новой ссылкой, которая не == s1. А вот второй вариант... Казалось бы, какое отношение он имеет к сравнению ссылок, если сравниваются s1 и s3. Но именно после появления String s2 = new String("JavaRush") все последующие инициализации со значением "JavaRush" будут ссылаться на более "свежую" строку "JavaRush" из пула, то есть на s2 - s3 получит ссылку на тот же объект, что и s2. То есть в пуле строк будут две ячейки "JavaRush", но на первую будет ссылаться только s1, а на вторую s2 и s3. Именно поэтому s1==s3 - false. А вот, когда мы раскомментируем первый вариант, то мы в s1 передадим уже существующую у него ссылку. Как буд-то бы мы написали: int a = 5; int a = 5; Именно поэтому первый вариант ничего нового не вносит и даёт возможность s2 и s3 сослаться на ту же ячейку. Верны ли мои умозаключения?