
Las cadenas en Java son secuencias de caracteres Unicode. Java no tiene un tipo cadena incorporado. Sin embargo, existe en la biblioteca estándar de Java, una clase denominada String que está disponible cuando se programa en Java. Objetos de tipo String son cadenas de caracteres que se escriben dentro de dobles comillas. Cada cadena entrecomillada es una instancia de la clase String.
String a = » «; // cadena vacía
String saludo = «Hola»;
Se puede declarar una variable de tipo cadena.
String ciudad;
ciudad = «Trujillo»;
Se pueden juntar la declaración y asignación.
String ciudad = «Trujillo»;
Se puede visualizar el objeto representando por la variable cadena, mediante
System.out.println(ciudad);
Concatenación de cadenas
Java, al igual que la mayoría de los lenguajes de programación, permite usar el operador + para unir (concatenar) dos cadenas.
Ejemplo
String nombre = «Cajamarca»;
String frase;
frase = nombre + » es muy bella»;
System.out.println(frase);
Se visualiza la frase
Cajamarca es muy bella
Cuando se concatena una cadena, con un valor que no es una cadena, el valor se convierte a cadena y se concatena. Por ejemplo:
int edad = 20;
String nombre = «Antony» + edad;
hacen que nombre se convierta en la cadena Antony20. Esta característica se utiliza con frecuencia en sentencias de salida. Por ejemplo:
System.out.println(«La solución es » + resultado);
y si resultado es 44, se imprime:
La solución es 44
Las cadenas son inmutables
En Java, un objeto de tipo String es un objeto inmutable lo que significa que los caracteres del objeto de String no se pueden cambiar. No existe ningún método que cambie el valor de un objeto, como «Antony» y en caso de desear cambiarla deberá recurrir a concatenar la subcadena que desea reemplazar.
String pueblo = «Margarita»;
pueblo = «Pueblo de » + pueblo;
La sentencia de asignación ha cambiado la variable pueblo a Pueblo de Margarita. También se pueden realizar los cambios mediante el método substring y la clase StringBuffer que tiene métodos para modificar sus objetos cadena.
Subcadenas de la clase String
El método substring extrae una subcadena de una cadena. Las sentencias

crean la subcadena, de la posición 0, carácter más a la izquierda, a la posición 3 inclusive; es decir la cadena cad = «Hola». En la siguiente imagen muestra los números de posición de la subcadena.

Una ventaja añadida a los índices del método substring es que permite encontrar fácilmente la longitud de la subcadena. La cadena ca.substring(n,m) tiene siempre la longitud m–n.
Ejemplo
La subcadena Hola de longitud 4, es decir m–n = 4–0 = 4
Longitud y comparación de cadenas
El método length( ) devuelve el número de caracteres de un objeto String como un valor de tipo int.
Ejemplo
String saludo = «hola Mortimer»;
System.out.println(«La longitud es: » + saludo.length( ));
Después de la ejecución de las sentencias anteriores se visualiza La longitud es 13. El método length se utiliza para encontrar el número de caracteres de una cadena; se puede utilizar en cualquier parte que se pueda utilizar un valor tipo int, como se ha hecho en el ejemplo anterior. Otra operación muy usual cuando se trabaja con cadenas, es comparar dos cadenas para ver si son iguales o distintas. El método equals devuelve true si son iguales y false en caso contrario.
Sintaxis
boolean equals(unaCadena);
devuelve true si el objeto de la cadena que llama y unaCadena son iguales.
Ejemplo
s.equals(t) // devuelve true si las cadenas s y t son iguales;
false en caso contrario.
s, t // variables cadena o constantes cadena.
«Hola».equals(saludo) // sentencia válida.
Otras comparaciones realizadas con equals:
String saludo = «Hola»;
saludo.equals(«Hola»); // devuelve true
saludo.equals(«Adios»); // devuelve false
saludo.equals(«hola»); // devuelve false ya que Hola y hola no son iguales
Hola y hola no son iguales ya que una cadena comienza con una letra mayúscula y otra empieza con una letra minúscula.
El método equalsIgnoreCase permite comparar dos cadenas y ver si son idénticas sin considerar la diferencia entre letras iguales mayúsculas y minúsculas.
Sintaxis
boolean equalsIgnoreCase(unaCadena);
«Hola».equalsIgnoreCase(«hola») // devuelve true
String nombre = «¡flanagan!»;
nombre.equalsIgnoreCase(«¡Flanagan!»); // devuelve true
Precaución
No utilizar el operador == para comprobar si dos cadenas son iguales. En caso de hacerlo, el operador determina si las cadenas se almacenan en la misma posición.
Normalmente, si las cadenas están en la misma posición, deben ser iguales; pero es posible almacenar múltiples copias de cadenas idénticas en sitios diferentes.
Ejemplo
String nombre = «Pedro»;
if (nombre == «Pedro»)
. . .
// probablemente es false
if (nombre.substrin(0,3) == «Ped»)
. . .
// probablemente es false
Métodos de la clase String
La clase String tiene un número de métodos muy útiles que se pueden utilizar para aplicaciones de procesamiento de cadenas. Además, existen cientos de clases en las bibliotecas estándar, con muchos más métodos. Por consiguiente, es esencial que se familiarice con la documentación API en línea que le permite examinar todas las clases y métodos de la biblioteca estándar. La documentación API es parte del JDK, está en el formato HTML en la dirección
https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/String.html
La clase String de Java contiene más de 50 métodos. La clase java.lang.String pertenece al paquete java.lang. A continuación se muestra una lista de métodos significativos.
- char charAt(posicion)
Devuelve el carácter del objeto cadena que se encuentra en posición. Las posiciones se cuentan 0, 1, 2, etcétera.
Ejemplo
String saludo = «¡Hola Ruiz!»;
saludo.charAt(0) // devuelve ¡
saludo.charAt(1) // devuelve H
- int compareTo(unaCadena)
Compara el objeto cadena llamador y el argumento cadena para ver cuál viene antes en el orden lexicográfico. El orden lexicográfico son los caracteres ordenados según los códigos ASCII o Unicode. En estos códigos todas las letras mayúsculas y todas las letras minúsculas están en orden alfabético – numérico pero todas las letras mayúsculas preceden a las letras minúsculas. De este modo, la ordenación lexicográfica es la misma que la ordenación alfabética pero teniendo en cuenta mayúsculas y minúsculas. Si la cadena llamadora es alfabéticamente menor devuelve un valor negativo. Si las cadenas son iguales devuelve cero y si el argumento es alfabéticamente menor devuelve un número positivo.
Ejemplo
String entrada = «albarricoque»;
entrada.compareTo(«margarita»); // devuelve un número negativo
entrada.compareTo(«albarricoque»); // devuelve cero
entrada.compareTo(«amnesia»); // devuelve un número positivo
- int compareToIgnoreCase(unaCadena)
Igual que compareTo pero tratando las letras mayúsculas y las minúsculas como si fueran iguales (es decir, las letras mayúsculas se tratan igual que si fueran letras minúsculas al hacer la comparación). Por consiguiente, si ambas cadenas constan totalmente de letras, la comparación se realiza por estricto orden alfabético. Si la cadena llamadora está primero devuelve un valor negativo. Si las dos cadenas son iguales devuelve cero. Si el argumento está primero devuelve un número positivo.
Ejemplo
String entrada = «albarricoque»;
entrada.compareToIgnoreCase(«margarita»); // devuelve un numero negativo
entrada.compareToIgnoreCase(«Albarricoque»); // devuelve cero
«Margarita».compareToIgnoreCase(entrada); // devuelve un numero positivo
- boolean endsWith(unaCadena)
Devuelve true si la cadena termina en unaCadena.
- boolean equals(unaCadena)
Devuelve true si el objeto cadena llamador y unaCadena son iguales. En caso contrario devuelve false.
- boolean equalsIgnoreCase(unaCadena)
Devuelve true si el objeto cadena llamador y unaCadena son iguales, considerando que las letras mayúsculas y minúsculas son iguales.
Ejemplo
String nombre = «Fernando»;
nombre.equalsIgnoreCase(«fernando»); // devuelve true
- int indexOf(String cad, int indiceFinal)
Devuelve el índice (posición) de la primera ocurrencia de la cadena cad en el objeto cadena llamador que ocurre después de la posición indiceFinal. Las posiciones se cuentan 0, 1, 2, 3, . . . .Devuelve –1 si no encuentra cad.
Ejemplo
String nombre = «Luis, Luis Mackoy»;
nombre.indexOf(«Luis», 1); // devuelve 6
nombre.indexOf(«Luis», 0); // devuelve 0
nombre.indexOf(«Luis», 9); // devuelve -1
- int lastIndexOf(String cad)
Devuelve el índice (posición) de la última ocurrencia de la cadena cad en el objeto cadena llamador. Las posiciones se cuentan 0, 1, 2, 3, . . . .Devuelve –1 si no encuentra cad.
Ejemplo
String nombre = «Magina, Sierra Magina «;
nombre.indexOf(«Magina», 0); // devuelve 0
nombre.lastIndexOf(«Magina»); // devuelve 13
- int length()
Devuelve la longitud de la cadena.
- boolean startsWith(String prefijo)
Devuelve true si la cadena comienza con prefijo.
- String substring(int inicioIndice)
Devuelve la subcadena del objeto cadena comenzando desde inicioIndice hasta el final de dicho objeto. Las posiciones se cuentan 0, 1, 2, 3, . . .
Ejemplo
String prueba = «Mnopqrs»;
prueba.substring(3) // devuelve «pqrs»
- String substring(int inicio, int fin)
Devuelve la subcadena del objeto cadena que comienza en la posición inicio hasta la posición fin –1.
Ejemplo
String prueba = «Mnopqrs»;
prueba.substring(3,6) // devuelve «pqr»
- String tolowerCase()
Devuelve una nueva cadena que contiene todos los caracteres de la cadena original, con los caracteres en mayúsculas convertidos a letras minúsculas.
Ejemplo
String sierra = «Sierra de Lupiana»;
sierra.tolowerCase(); // devuelve «sierra de lupiana»
- String toUpperCase()
Devuelve una cadena que contiene todos los caracteres de la cadena original, con los caracteres letras minúsculas convertidos a letras mayúsculas.
Ejemplo
String cadena = «El Negro Mama»;
cadena.toUpperCase(); // devuelve «EL NEGRO MAMA»
- String trim()
Devuelve una nueva cadena eliminando todos los espacios en cabeza y cola de la cadena original.
Ejemplo
String miRio = » Rio Magdalena «;
miRio.trim(); // devuelve «Rio Magdalena»