Cadenas Java
Hay tres formas de comparar cadenas en Java. El método equals() de Java compara dos objetos de cadena, el operador de igualdad == compara dos cadenas, y el método compareTo() devuelve la diferencia numérica entre dos cadenas.
La comparación de cadenas es una parte crucial del trabajo con cadenas en Java. Por ejemplo, si estás construyendo una aplicación para una cafetería que comprueba quién pidió qué bebida, es posible que quieras comparar el nombre del cliente con el que tienes en el archivo.
Este tutorial discutirá, con referencias y ejemplos, cómo comparar cadenas en Java. Discutiremos las tres opciones principales utilizadas para comparar cadenas, y exploraremos las limitaciones del operador == al comparar cadenas en Java.
Supongamos que tenemos una cafetería y queremos comparar si el nombre de un cliente coincide con el que tenemos asociado a un pedido concreto. Podríamos comparar estos nombres utilizando el siguiente código:
Vamos a desglosar nuestro código. Primero, declaramos una clase llamada CompararNombres que almacena el código de nuestro programa. A continuación, declaramos una variable llamada orderName que almacena el nombre asociado a un pedido concreto, y una variable llamada customerName que almacena el nombre del cliente que está buscando su bebida.
¿Puedo utilizar == para comparar cadenas en Java?
No se debe utilizar == (operador de igualdad) para comparar estas cadenas porque se compara la referencia de la cadena, es decir, si son el mismo objeto o no. Por otro lado, el método equals() compara si el valor de las cadenas es igual, y no el objeto en sí.
¿Cuál es la diferencia entre los métodos == equals () y compareTo ()?
equals puede tomar cualquier objeto como parámetro, pero compareTo sólo puede tomar una cadena.
¿Qué hace compareTo () en Java?
El método compareTo() compara dos cadenas lexicográficamente. La comparación se basa en el valor Unicode de cada carácter de las cadenas. El método devuelve 0 si la cadena es igual a la otra.
Comparado con java
Además, un literal de cadena se refiere siempre a la misma instancia de la clase String. Esto se debe a que los literales de cadena -o, más generalmente, las cadenas que son los valores de expresiones constantes (§15.28)- se “internan” para compartir instancias únicas, utilizando el método String.intern.
String.contentEquals() compara el contenido de la cadena con el contenido de cualquier CharSequence (disponible desde Java 1.5). Te ahorra tener que convertir tu StringBuffer, etc en un String antes de hacer la comparación de igualdad, pero te deja la comprobación de nulos.
Esto se debe a que cuando creas cualquier literal de String, la JVM primero busca ese literal en el pool de String, y si encuentra una coincidencia, esa misma referencia se le dará al nuevo String. Debido a esto, obtenemos:
Las cadenas en Java son inmutables. Esto significa que cada vez que se intenta cambiar/modificar la cadena se obtiene una nueva instancia. No se puede cambiar la cadena original. Esto se ha hecho para que estas instancias de cadena puedan ser almacenadas en caché. Un programa típico contiene muchas referencias a cadenas y el almacenamiento en caché de estas instancias puede disminuir la huella de memoria y aumentar el rendimiento del programa.
Comparar parte de la cadena java
Los tutoriales de Java han sido escritos para el JDK 8. Los ejemplos y las prácticas que se describen en esta página no aprovechan las mejoras introducidas en versiones posteriores y pueden utilizar tecnología que ya no está disponible.Consulte los cambios en el lenguaje de Java para obtener un resumen de las características actualizadas del lenguaje en Java SE 9 y las versiones posteriores.Consulte las notas de la versión del JDK para obtener información sobre las nuevas características, las mejoras y las opciones eliminadas o obsoletas de todas las versiones del JDK.
Compara dos cadenas lexicográficamente, ignorando las diferencias de mayúsculas y minúsculas. Devuelve un número entero que indica si esta cadena es mayor que (el resultado es > 0), igual a (el resultado es = 0) o menor que (el resultado es < 0) el argumento.
El programa recorre la cadena a la que se refiere searchMe un carácter cada vez. Para cada carácter, el programa llama al método regionMatches para determinar si la subcadena que comienza con el carácter actual coincide con la cadena que el programa está buscando.
Concatenación de cadenas java
El String es una clase especial en Java. Utilizamos String regularmente en los programas Java, por lo que la comparación de dos cadenas es una práctica común en Java. En este artículo, he tratado de responder a las preguntas más comunes sobre la cadena, como: “¿Cómo puedo comparar cadenas en Java?”
El método equals() de la clase String toma otra cadena como parámetro y la compara con la cadena especificada. Devuelve verdadero si -y sólo si- la cadena parámetro no es nula y contiene los mismos caracteres que la cadena especificada.
Cuando asignamos un valor de cadena a la variable string, la JVM comprobará si la cadena con el mismo valor ya está presente en el pool de cadenas o no. Si no está presente en el pool de cadenas, se añadirá al pool de constantes y se devolverá la referencia a ese objeto cadena.
Devuelve un entero negativo si la cadena del argumento es lexicográficamente mayor que la cadena especificada, es decir, si la cadena del argumento es posterior a la cadena especificada. (cadena del argumento > cadena especificada )
Devuelve un entero positivo si la cadena de argumentos es lexicográficamente menor que la cadena especificada, es decir, si la cadena de argumentos precede a la cadena especificada. (argumento Cadena < Cadena especificada )