De acordo com a String # intern () , o internmé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 samefosse impresso como s3 está internado e s1 and s2 are samenã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 internmétodo? Em outras palavras, quando devemos usar esse método?
interncomo método público. Não deveríamos ter interncomo método privado, para que ninguém pudesse ter acesso a ele. Ou existe algum objetivo desse método?
