Curso de Java. Manipulando cadenas. La clase String.

Hasta ahora, en lo que llevamos avanzado en el curso de java hemos visto y trabajado sobre tipos de datos numéricos (byte, int, double, etc ) y tipos de datos que trabajan con caracteres (char).  Además, también hemos aprendido a crear objetos envoltorio sobre esos tipos de datos, que nos proporcionan numerosos métodos para trabajar con dichos tipos. Sin embargo no hemos visto todavía como podemos trabajar con string o cadenas de caracteres, que es una de las cosas mas importantes y utilizadas en los programas realizados en java.

Para trabajar con objetos String o cadenas java dispone de la clase String. Aunque ya hemos trabajado en algún ejemplo del curso de Java con esta clase String hasta ahora no la veíamos como clase propiamente dicha, mas bien la tratábamos como un tipo primitivo más.

En esta página entre otras cosas aprenderemos como crear objetos de la clase String y veremos también los principales métodos de la clase String que podemos utilizar para trabajar con cadenas de caracteres.

Declarar e inicializar una variable u objeto de la clase String.

Una variable de la clase String se declara como cualquier otro tipo de variable, de la siguiente forma:

Posteriormente para inicializar esta variable u objeto String ya declarada podemos proceder de dos formas:

1ª) Directamente asignándola una cadena de caracteres o string.

2ª) Utilizando la palabra reservada new y llamando al constructor de la clase String.

Importante! Una vez creada una variable u objeto String este  no puede modificarse es inmutable. Cuando veamos los métodos de String comentaremos esto.

Cuando trabajamos con strings puede que necesitemos unirlas o concatenarlas, compararlas o recorrerlas de alguna manera. A continuación veremos estas acciones:

¿Como concatenar o unir cadenas o strings?

Hay varias formas de concatenar cadenas o Strings:

La primera es usando el operador  de concatenación «+».  El siguiente ejemplo muestra su fácil uso:

En el ejemplo vemos que cuando la sentencia se alarga demasiado podemos separar en lineas distintas utilizando el operador de concatenación «+». Este código producirá la siguiente salida en consola:

Curso de java. Concatenando cadenas o String



La segunda forma de concatenar strings o cadenas es usando el método concat() de la clase String:

Podemos usar como argumento en el método concat una variable String o directamente una cadena de caracteres.

Este nuevo código producirá exactamente la misma salida en consola que el anterior:
Curso de java. Concatenando cadenas con metodo concat.

Antes dijimos que una cadena, objeto o variable de la clase String una vez creada es inmutable. Viendo como actúa el método concat() puede parecer que modifica las variables o cadenas donde se aplica, pero no es así, el método concat y otros métodos de la clase string crean y retornan una nueva cadena dejando intacta la cadena original donde se aplican.

¿Porque en Java un String es inmutable?

La razón de que un String sea inmutable es que es un objeto de la clase string y en Java los objetos se pueden crear y destruir pero no modificar. Esta filosofía de protección de objetos hace que java sea un lenguaje compacto y seguro.

Lo que si podemos crear referencias a dichos objetos o strings y trabajar con ellos para conseguir determinados resultados.

Ejemplo que comprueba como un String es inmutable.

En el siguiente ejemplo confirmamos como un string es inmutable:


En consola comprobamos que los valores de las variables de clase String originales permanecen intactas:
Curso de java. Concatenando cadenas con metodo concat.

¿Como comparar si dos cadenas o Strings son iguales?

Para comparar o comprobar la similitud de dos cadenas o Strings podemos usar varios métodos de la clase String. Estos métodos son los siguientes:

Métodos de la clase String. Comparar cadenas.
Método.Descripción.
equals(String cadena)Devuelve true o false tras la comparación de cadenas.
equalsIgnoreCase(String cadena)Igual que el anterior pero sin tener en cuenta Mayúsculas ni minúsculas.
compareTo(String cadena)Compara caracter a caracter alfabéticamente devuelve un entero mayor, menor ó igual a 0.
compareToIgnoreCase(String cadena)Igual que el anterior pero sin tener en cuenta Mayúsculas ni minúsculas.

Veamos un ejemplo de programa en java que compara cadenas de caracteres o strings:


En consola obtenemos la siguiente salida:
Curso de Java. Métodos de la clase String para comparar cadenas.

¿Como acceder a un carácter dentro de una cadena o String?

Un string o variable de la clase String tiene semejanza con un array o matriz de caracteres, es decir, los caracteres que forman dicho string están colocados según un indice que los numera. Por ejemplo en el string «Hola amigos» el carácter «H» ocuparía la posición «0» del indice y el carácter «m» ocuparía la posición «6» del índice.

El método charAt(int index) retorna el carácter situado en la posición index que se le pase como parámetro. Ejemplo:

¿Como convertir un String en un array  y un array en un string?

Tal y como hemos dicho antes una cadena o String no se diferencia en mucho de un array (En algunos lenguajes de programación son misma cosa). En Java podemos obtener un array de una cadena utilizando el método toCharArray(). Posteriormente podemos recorrerlo como con cualquier otro array. En este ejemplo vemos como se utiliza:

En consola tenemos la siguiente salida:

Curso de Java. Convertir una cadena o String en un array

El caso contrario sería convertir un array en un string o cadena. Para ello la clase String dispone de varios métodos similares, el método copyValueOf(char [] array) y el método  ValueOf(char [] array).

En el ejemplo siguiente de programa java demostramos su uso:


Finalmente en consola obtenemos misma salida usando las tres formas o métodos de la clase String:
Curso de Java. Convertir un array en una cadena

¿Como convertir un número en un String o cadena en java?

Si utilizamos el operador de concatenación «+» para unir una cadena a un número el compilador convierte todo en un String o cadena. Por otro lado, otra forma es utilizar el método toString que puede accederse dese cualquier objeto envoltorio o directamente utilizando la clase envoltorio de forma estática. A continuación os pongo un par de ejemplos de como utilizar dicho método y los resultados obtenidos:


En consola nos daria el siguiente resultado:
Curso de Java. Convertir un número a Cadena o String.

¿Cómo conseguir la longitud de un String en Java?

Para averiguar o conocer el tamaño o longitud de un string en Java tenemos el método length(), que devuelve un entero o int con el número de caracteres del String o cadena.

Algunos métodos más de la Clase String.

La clase String posee numerosos métodos para trabajar con cadenas. Por ejemplo a continuación os dejo algunos de los más utilizados:

1
boolean endsWith(string cad)
Devuelve «true o false» si la cadena termina con la cadena (cad) que le pasamos como parámetro.
1
void getChars(int inicio, int final, char t[], int inic)
Copia la parte de la cadena que comprende entre inicio (incluido) y final (no incluido) y lo copia en una tabla previamente creada realizando la inclusión en dicha tabla a partir de la posición «inic» de la misma.
1
int indexOf(char caract)
Devuelve la posición del carácter pasado como parámetro en la cadena o «-1» si no lo encuentra.
1
int lastIndexOf(char caract)
Devuelve la ultima coincidencia del carácter pasado como parámetro en la cadena o «-1» si no lo encuentra.
1
int indexOf(char caract, int iniciar)
Idéntico a indexOf, pero empieza la búsqueda a partir de la posición (iniciar) pasada como parámetro.
1
int lastIndexOf(char caract, int iniciar)
Devuelve la ultima coincidencia del carácter pasado como parámetro en la cadena o «-1» si no lo encuentra, pero empieza la búsqueda a partir de la posición (iniciar) pasada como parámetro.
1
int indexOf(string cadena)
Devuelve la posición de la primera coincidencia con el primer carácter de la cadena pasada como parámetro o «-1» si no lo encuentra.
1
int lastIndexOf(string cadena)
Devuelve la posición de la última coincidencia con el primer carácter de la cadena pasada como parámetro o «-1» si no lo encuentra.
1
int indexOf(string cadena, int iniciar)
Idéntico a indesOf (string cadena), pero empieza la búsqueda a partir de la posición (iniciar) pasada como parámetro.
1
int lastIndexOf(string cadena, int iniciar)
Idéntico a lastIndexOf(string cadena), pero empieza la búsqueda a partir de la posición (iniciar) pasada como parámetro.
1
boolean isEmpty()
Devuelve true o false si la cadena esta vacia.
1
int length()
Devuelve la longitud (número de caracteres) de la cadena.
1
String replace(char car1, char car2)
remplaza todos los caracteres «car1» encontrados en la cadena por el caracter «car2» introducidos como parámetros.
1
boolean startsWith(string cad)
Comprueba si la cadena empieza por el valor del parámetro introducido (es sensible a Mayúsculas y minúsculas).
1
boolean startsWith(string cad, int inicio)
Idéntico al anterior pero empieza la comparación en la posición «inicio» dada como parámetro.
1
String substring(int inicio)
Devuelve una subcadena formada desde la posición «inicio» hasta el final de la cadena original.
1
String substring(int inicio, int final)
Devuelve una subcadena formada desde la posición «inicio» (incluida) hasta la posición «final» (no incluida).
1
String toLowerCase()
Devuelve una cadena con todos los caracteres en minúscula.
1
String toUpperCase()
Devuelve una cadena con todos los caracteres en Mayúscula.
1
String trim()
Elimina espacios en blanco al principio y final de una cadena.
¿Te ha gustado? Compártelo.

Un comentario

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  Acepto la política de privacidad

Información sobre protección de datos

  • Responsable: MIGUEL ANGEL SANZ
  • Fin del tratamiento: Moderar los comentarios. Responder las consultas
  • Legitimación: Tu consentimiento
  • Destinatarios 1&1 Internet España S.L.U. Politica de privacidad. https://www.ionos.es/terms-gtc//terms-privacy/.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información adicional: Más información en nuestra política de privacidad.