Quando devemos usar o método interno de string em literais de string

De acordo comCadeia # interna (), intern método deve retornar a String do conjunto de Cadeias se a Cadeia de caracteres estiver localizada em Cadeia de Caracteres, caso contrário, um novo objeto de cadeia de caracteres será incluído no conjunto de Cadeias e a referência dessa Cadeia 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 estava esperando issos1 and s3 are same será impresso como s3 está internado, es1 and s2 are same não será impresso. Mas o resultado é: ambas as linhas são impressas. Então, isso significa que, por padrão, constantes String são internadas. Mas se é assim, então por que precisamos dointern método? Em outras palavras, quando devemos usar esse método?

questionAnswers(13)

yourAnswerToTheQuestion