De acordo com a String # intern () , o intern
método deve retornar a String do pool de String se a String for encontrada no pool de String, caso contrário, um novo objeto de string será adicionado ao pool de String e a referência dessa String será retornada.
Então eu tentei isso:
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.
}
Eu esperava que s1 and s3 are same
fosse impresso como s3 está internado e s1 and s2 are same
não será impresso. Mas o resultado é: ambas as linhas são impressas. Portanto, isso significa que, por padrão, as constantes String são internadas. Mas, se é assim, por que precisamos do intern
método? Em outras palavras, quando devemos usar esse método?
intern
como método público. Não deveríamos ter intern
como método privado, para que ninguém pudesse ter acesso a ele. Ou existe algum objetivo desse método?