Cadenas (“strings”) en Java

Manipulación de cadenas (‘strings‘) en Java y código de ejemplo

Un objeto de la clase String se crea a partir de literales (cadena de caracteres); Java crea un objeto String cuando encuentra una cadena entre comillas. Los String permiten operar con palabras y frases.

No es tipo nativo de Java, existe la clase java.lang.String. La igualdad de dos String, aplicando el operador de comparación ==, no se basa en que su valor sea idéntico (que contengan la misma cadena de caracteres) sino en que apunten al mismo grupo de datos. La comparación de dos String por su contenido se hace con el método equals que compara los caracteres que componen ambos String:

boolean B = String_2.equals(String_1);

Se puede crear un objeto String de 2 maneras:

String cadena = "Cadena";
String cadena = new String("Cadena");

El primer método es preferible; como se ha dicho, Java crea un objeto String siempre que encuentra texto entre comillas por lo que en el segundo ejemplo se llama al constructor 2 veces.

Los String se pueden concatenar con el operador suma (+):

String cadena = "Cadena" + "Otra cadena";


Métodos de la clase String

A continuación se comentan los métodos más importantes de la clase String:

  • concatenar texto y usar caracteres de escape para saltos de línea y tabulaciones:
    system.out.println( “nLa cadena de texto es :n” );
    System.out.println( “t” + texto );
  • concatenar texto con números enteros:
    System.out.println( “Concatenamos cadenas con enteros: ” + texto + ” ” + 5 + ” ” + 23.5 );
  • length() devuelve la longitud de la cadena en caracteres:
    System.out.println( “La longitud de la cadena es: ” + texto.length() );
  • charAt(int) devuelve la posición que ocupa el carácter que se especifica:
    System.out.println( “La segunda letra de texto es: ” + texto.charAt(1) );
  • replace(char, char) reemplaza todas las ocurrencias del primer carácter por el segundo:
    texto = texto.replace(“c”, “q”);
    System.out.println( “Cambiamos c por q en el texto: ” + texto);
  • toUpperCase() devuelve la cadena en mayúsculas:
    System.out.println( “La cadena de texto en mayusculas: ” + texto.toUpperCase() );
  • substring(int, int) devuelve una cadena que comienza en el carácter que ocupa la posición del primer parámetro int y termina en el carácter que ocupa la posición del segundo parámetro int:
    System.out.println( “Tres letras de texto desde la posicion 2: ” + texto.substring(2,5) );
  • toLowerCase() devuelve la cadena en mayúsculas:
    System.out.println( “La cadena de texto en minusculas: ” + texto.toLowerCase() );
  • compareTo(String) compara dos String desde el punto de vista lexicográfico (en el que la cadena más corta precede a la más larga):
    – devuelve entero negativo si el String precede al argumento
    – devuelve entero positivo si el String va detrás del argumento
    – devuelve cero si ambos String son iguales (compareTo() devuelve cero cuando equals(Object) devuelve true)
    System.out.println( “Comparamos texto1 y texto2: ” + texto1.compareTo(texto2) );
    if (texto1.compareTo(texto2) < 0)
    System.out.println( “Texto1 es mas corto que texto2” );
  • append() añade texto a una cadena existente:
    texto.append( “texto nuevo”) ;
    System.out.println( “El texto ahora es: ” + texto );
  • indexOf() devuelve el índice en que aparece por primera vez el carácter especificado (devuelve -1 si el carácter no se encuentra):
    System.out.println( “La letra l aparece por primera vez en el texto en el indice: ” + texto.indexOf( “l” ) );
  • lastIndexOf() devuelve el índice en que aparece por última vez el carácter especificado (devuelve -1 si el carácter no se encuentra):
    System.out.println( “La letra l aparece por ultima vez en el texto en el indice: ” + texto.lastIndexOf( “l” ) );
  • insert(int, char) intercala un carácter en la posición especificada:
    texto.insert(6, “1”);
    System.out.println( “Intercalamos un 1 en la posición 6: ” + texto );
  • reverse() devuelve el texto invertido:
    texto.reverse();
    System.out.println( “Y ahora el texto invertido: ” + texto );

Código de ejemplo

/* CLASE QUE MUESTRA EN CONSOLA LOS RESULTADOS
* DE ALGUNOS MÉTODOS QUE MANIPULAN CADENAS */

public class Cadenas
{

	public static void main(String[] args)
	{
		String texto1 = "PolloDavid"; // Declaración simple
		String texto2 = new String("PolloMiliuco"); // Usando un constructor

		System.out.println( "\nLa primera cadena de texto es :\n" );
		System.out.println( "\t"+texto1 );
		System.out.println( "\nLa segunda cadena de texto es :\n" );
		System.out.println( "\t"+texto2 );

		System.out.println( "\nConcatenamos con texto2 delante: " + texto2 + texto1 );
		System.out.println( "Concatenamos con texto1 delante: " + texto1 + texto2 );
		System.out.println( "Concatenamos cadenas con enteros: " + texto1 + " " + 5 + " " + 23.5 );

		System.out.println( "\nLa longitud de la texto2 es: " + texto2.length() );
		System.out.println( "La segunda letra de texto2 es: " + texto2.charAt(1) );
		System.out.println( "Tres letras de texto2 desde la posicion 2: " + texto2.substring(2,5) );

		System.out.println( "\nLa letra l aparece por primera vez en texto2 en el indice: " + texto2.indexOf("l") );
		System.out.println( "La letra l aparece por ultima vez en texto2 en el indice: " + texto2.lastIndexOf("l") );

		texto2 = texto2.replace("c", "q");
		System.out.println( "\nCambiamos c por q en texto2: " + texto2);

		System.out.println( "\nLa cadena texto2 en mayusculas: " + texto2.toUpperCase() );
		System.out.println( "La cadena texto2 en minusculas: " + texto2.toLowerCase() );

		System.out.println( "\nComparamos texto1 y texto2: " + texto1.compareTo(texto2) );
		if (texto1.compareTo(texto2) < 0)
		System.out.println( "\tTexto1 es mas corto que texto2" );

		StringBuffer texto3 = new StringBuffer("Otra cadena");
		texto3.append(" nueva");
		System.out.println( "\nTexto 3 es: " + texto3 );

		texto3.insert(6, "1");
		System.out.println( "Intercalando un 1 en la posicion 6: " + texto3 );

		texto3.reverse();
		System.out.println( "Y ahora texto3 invertido: " + texto3 +"\n");
	}
}