Video: Tutorial Java 19 - Comparando objetos 2024
¡Cuando comienza a trabajar con objetos en Java, encuentra que puede usar == y! = para comparar objetos entre sí. Por ejemplo, un botón que ves en la pantalla de la computadora es un objeto. Puede preguntar si lo que acaba de hacer clic en el mouse es un botón en particular en su pantalla. Haga esto con el operador de igualdad de Java.
if (e. GetSource () == bCopy) {portapapeles. setText (que. getText ());
El gran problema con el esquema de comparación de Java se produce cuando se comparan dos cadenas. Cuando compara dos cadenas entre sí, no quiere usar el doble signo igual. Al usar el signo doble igual preguntaría: "¿Está esta cuerda almacenada exactamente en el mismo lugar en la memoria que esa otra cuerda? "Usualmente, eso no es lo que quieres preguntar.
En cambio, generalmente quiere preguntar: "¿Esta cadena tiene los mismos caracteres que esa otra cadena? "Para hacer la segunda pregunta (la pregunta más apropiada), el tipo de Cadena de Java tiene un método llamado igual a. (Como todo lo demás en el universo conocido, este método igual se define en la API de Java, abreviación de Application Programming Interface.)
El método equals compara dos cadenas para ver si tienen los mismos caracteres. Para un ejemplo usando el método de igualdad de Java, vea este listado de código. (La figura muestra una ejecución del programa en la lista).
import static java. lang. Sistema. *; importar java. util. Escáner; checkPassword de clase pública {public static void main (String args []) {out. imprimir ("¿Cuál es la contraseña?"); Teclado del escáner = nuevo Escáner (en); Contraseña de cadena = teclado. siguiente(); fuera. println ("Escribiste >>" + contraseña + "<<"); fuera. println (); if (contraseña == "pez espada") {out. println ("La palabra que escribiste está almacenada"); fuera. println ("en el mismo lugar que el real"); fuera. println ("contraseña. Debe ser un"); fuera. println ("hacker");} else {out. println ("La palabra que escribiste no es"); fuera. println ("almacenado en el mismo lugar que"); fuera. println ("la contraseña real, pero eso es"); fuera. println ("no es gran cosa".);} fuera. println (); if (password. equal ("pez espada")) {out. println ("La palabra que ha escrito tiene el"); fuera. println ("los mismos caracteres que el real"); fuera. println ("contraseña. Puedes usar nuestro"); fuera. println ("sistema precioso");} else {out. println ("La palabra que escribiste no"); fuera. println ("tiene los mismos caracteres que"); fuera. println ("la contraseña real. No puedes"); fuera. println ("usa nuestro precioso sistema.");} teclado. close ();}}
En la lista, el teclado de la llamada. next () toma la palabra que el usuario escriba en el teclado de la computadora. El código introduce esta palabra en la variable llamada contraseña. Entonces las declaraciones if del programa usan dos técnicas diferentes para comparar la contraseña con "pez espada".
Los ejemplos en el libro impreso son en su mayoría basados en texto, pero puede encontrar versiones más elegantes de la mayoría de los ejemplos en el sitio web de Dummies. Estas versiones más elegantes tienen ventanas, botones, campos de texto y otros elementos de una interfaz gráfica de usuario típica (GUI).
La más apropiada de las dos técnicas usa el método de igualdad de Java. El método equals parece divertido porque cuando lo llamas, pones un punto después de una cadena y colocas la otra cuerda entre paréntesis. Pero esa es la forma en que tienes que hacerlo.
Al llamar al método de igualdad de Java, no importa qué cadena obtiene el punto y cuál se pone entre paréntesis. Por ejemplo, en la lista, podría haber escrito
if ("swordfish". Equals (password))
El método funcionaría igual de bien.
Una llamada al método de igualdad de Java se ve desequilibrada, pero no lo es. Hay una razón detrás del aparente desequilibrio entre el punto y el paréntesis. La idea es que tengas dos objetos: el objeto de contraseña y el objeto "pez espada".
Cada uno de estos dos objetos es de tipo Cadena. (Sin embargo, la contraseña es una variable de tipo String, y "swordfish" es un literal String). Cuando escribe una contraseña. equals ("swordfish"), está llamando a un método equals que pertenece al objeto password. Cuando llamas a ese método, le estás dando "pez espada" al método como parámetro del método (juego de palabras intencionado).
Al comparar cadenas entre sí, use el método igual - no el doble signo igual.