De acuerdo con String # intern () , intern
se supone que el método devuelve el String del conjunto de String si el String se encuentra en el conjunto de String; de lo contrario, se agregará un nuevo objeto de string en el conjunto de String y se devolverá la referencia de este String.
Entonces intenté esto:
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.
}
Esperaba que s1 and s3 are same
se imprimiera cuando s3 está internado y s1 and s2 are same
no se imprimirá. Pero el resultado es: ambas líneas se imprimen. Eso significa que, por defecto, las constantes de cadena están internadas. Pero si es así, ¿por qué necesitamos el intern
método? En otras palabras, ¿cuándo debemos usar este método?
intern
como método público? ¿No deberíamos tener intern
un método privado para que nadie pueda tener acceso a él? ¿O hay algún propósito de este método?