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 party1
serí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
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 String
método devolvería un nuevo String
puesto String
s son inmutables.