Как объясняется в этом Когда мы должны использовать метод intern String для String констант, опубликуем, что литералы String автоматически объединены, но для объекта, построенного с использованием новых, нет, поэтому для этот интерпольный метод используется. Но даже если мы будем использовать метод intern, будет создан новый объект, то в чем заключается использование метода intern?
String s = "Example";
String s1 = new String("Example"); // will create new object
String s2 = new String("Example").intern(); // this will create new object
// but as we are calling intern we will get reference of pooled string "Example"
now
System.out.println(s == s1); // will return false
System.out.println(s == s2); // will return true
System.out.println(s1 == s2); // will return false
Итак, какое использование метода intern?
Edit
Я понял работу метода intern, но мой вопрос , почему существует метод intern?, потому что для вызова метода intern мы должны создавать строковый объект с помощью new, который будет создавать новый экземпляр строки!
String s3 = new String("Example"); // again new object
String s4 = s3.intern();
System.out.println(s3 == s4); // will return false
Таким образом, вызов метода intern не будет указывать s3 на объединенную строку. intern метод вернет ссылку на объединенную строку.
Также вызов intern переместит строку в пул, если она еще не объединена? Значит ли это, что каждый раз, когда я вызываю intern на любой строке, вы будете пущены в пул?