¿Por qué no está internada la cadena devuelta por String.toLowerCase ()?

mounaim:

Me pidieron para predecir el resultado de este código:

String party1 = "party";
String party2= "PARTY".toLowerCase();
if(party1==party2){
   System.out.println("EQUAL");
}else{
   System.out.println("NOT EQUAL");
}

Pensé que el resultado de toLowerCase()que ser internados de forma automática y por lo tanto la misma referencia que party1sería devuelto, pero estaba equivocado ya que el código salidas que "no es igual" .
No toLowerCase()( toUpperCase()también) devolver una nueva String?

Editar : No estoy usando == para comparar cadenas, sólo quiero saber sobre el comportamiento de toLowerCase () método

Andrew Tobilko:

Si el resultado de cualquier operación de cuerdas se internaliza, la piscina estaría creciendo muy rápidamente y de forma innecesaria. Cualquier acción intermedia en un resorte daría lugar a un nuevo elemento en la piscina. Sería beneficioso para un número muy pequeño de casos dentro de un dominio muy específico. Por lo tanto, no es la política por defecto y por eso intern()existe.

String party1 = "party";
String party2 = "PARTY".toLowerCase().intern();
System.out.println(party1 == party2 ? "EQUAL" : "NOT EQUAL");

No hay nada especial acerca de toLowerCase(): cualquier Stringmétodo devolvería un nuevo Stringpuesto Strings son inmutables.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=314716&siteId=1
Recomendado
Clasificación