Согласно String # intern(), метод intern
должен возвращать строку из пула строк, если строка найдена в пуле строк, в противном случае новый объект строки будет добавлен в пул строк и будет возвращена ссылка на эту строку.
Итак, я попробовал это:
String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
if ( s1 == s2 ){
System.out.println("s1 and s2 are same"); // 1.
}
if ( s1 == s3 ){
System.out.println("s1 and s3 are same" ); // 2.
}
Я ожидал, что s1 and s3 are same
будут напечатаны, так как s3 интернирован, а s1 and s2 are same
не будут напечатаны. Но результат: обе строки напечатаны. Это означает, что по умолчанию строковые константы интернированы. Но если это так, то зачем нам метод intern
? Другими словами, когда мы должны использовать этот метод?