Duda al usar valor_String.equals("a")

Iniciado por LPMgdr, 27 Noviembre 2014, 19:40 PM

0 Miembros y 1 Visitante están viendo este tema.

LPMgdr

Hola

Quería saber qué pasa con el "a"

osea, al escribir "a" estoy creando un obketo String que vale "a"?
o de qué manera funcionaría el String al usarlo en algo.. simple por asi decir

como por ejemplo

String palabra="hola";
boolean esA=palabra.equals("hoja");

Chuidiang

Hola:

String palabra = "hola";

efectivamente, se está creando un String cuyo contenido es "hola"

Sólo hay una diferencia entre estas líneas

String palabra = "hola";
String palabra2 = "hola";
String palabra3 = new String("hola");

en palabra y palabra2 el compilador es listo y crea un único String que asigna a ambas variables (un único String quiere decir que hay una única zona de memoria que contiene ese texto "hola"). Por ello

palabra == palabra2 será true ya que el compilado se encarga de que sea el mismo String (la misma zona de memoria)
y palabra.equals(palabra2) también es true ya que su contenido es el mismo.

En el caso de new String("hola") estás diciendo que quieres que se cree una nueva instancia de String (una nueva zona de memoria), por lo que

palabra == palabra3 es false, ya que son String distintos ( distintas zonas de memoria, aunque tienen el mismo contenido)
palabra.equals(palabra3) es true, ya que aunque son String distintos, su contenido es el mismo.

Se bueno.

LPMgdr

Hola Chui

preguntaba otra cosa, pero igual no sabía lo que me explicaste. hace poco empecé

Mi duda es  con esto

tengo esto por ejemplo

String palabra="hola";

ahora uso substring  para tomar la pirmer letra y uso equals para ver si es igual a "a"

boolean esA=palabra.substring(0,1).equals("a") //uso substring para plantear mi duda

de dónde sale esa "a"?

al escribir "a" estoy creando un String con valor "a"? para que luego equals lo compare con palabra?

Osea, declaro el boolean esA, uso el objeto palabra que lo creé, uso el método substring que ya está escrito, pero y la "a"?

no se si me explico, tampoco es algo urgente para saber, es solo curiosidad


Chuidiang

Hola:

Sí, una "a" es un String "a".

Se bueno.