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.
En Java sólo los tipos primitivos del lenguaje (byte, short, int, long, float, double, char, boolean) se comparan con ==, los Strings se comparan con el método equals que compara los caracteres que componen ambos String.

boolean B = cadena2.equals(cadena1);

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 con texto: operador +
  • concatenar texto con números enteros: operador +
  • caracteres de escape para saltos de línea y tabulaciones: \n \t
  • length() devuelve la longitud de la cadena en caracteres
  • charAt(int) devuelve el carácter que ocupa el índice especificado
  • replace(char, char) reemplaza todas las ocurrencias del primer carácter por el segundo
  • toUpperCase() devuelve la cadena en mayúsculas
  • toLowerCase() devuelve la cadena en mayúsculas:
  • substring(int, int) devuelve una cadena que comienza en el índice del primer parámetro y termina en el índice del segundo parámetro
  • 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(String) devuelve true)
  • append() añade texto a una cadena existente
  • indexOf() devuelve el índice en que aparece por primera vez el carácter especificado (devuelve -1 si el carácter no se encuentra)
  • lastIndexOf() devuelve el índice en que aparece por última vez el carácter especificado (devuelve -1 si el carácter no se encuentra)
  • insert(int, char) inserta un carácter en la posición especificada
  • reverse() devuelve el texto invertido.

Código de ejemplo

/* CLASE QUE MUESTRA EN CONSOLA LOS RESULTADOS
* DE ALGUNOS METODOS QUE MANIPULAN CADENAS */

public class Cadenas
{
	public static void main(String[] args)
	{
		//instanciar
		String texto1 = "PolloDavid"; // Declaracion 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 );
		//concatenar
		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 );
		// longitud
		System.out.println( "\nLa longitud de texto2 es: " + texto2.length() );
		//caracter de un indice
		System.out.println( "La segunda letra de texto2 es: " + texto2.charAt(1) );
		//buscar segmentos
		System.out.println( "Tres letras de texto2 desde la posicion 2: " + texto2.substring(2,5) );
		//primer indice de un caracter
		System.out.println( "\nLa letra l aparece por primera vez en texto2 en el indice: " + texto2.indexOf("l") );
		//ultimo indice de un caracter
		System.out.println( "La letra l aparece por ultima vez en texto2 en el indice: " + texto2.lastIndexOf("l") );
		//reemplazar
		texto2 = texto2.replace("c", "q");
		System.out.println( "\nCambiamos c por q en texto2: " + texto2);
		// mayúsculas y minúsculas
		System.out.println( "\nLa cadena texto2 en mayusculas: " + texto2.toUpperCase() );
		System.out.println( "La cadena texto2 en minusculas: " + texto2.toLowerCase() );
		//comparación
		System.out.println( "\nComparamos texto1 y texto2: " + texto1.compareTo(texto2) );
		if (texto1.compareTo(texto2) < 0)
		System.out.println( "\tTexto1 es mas corto que texto2" );
		//nueva cadena con StringBuffer
		StringBuffer texto3 = new StringBuffer("Otra cadena");
		//agregar caracteres al final
		texto3.append(" nueva");
		System.out.println( "\nTexto 3 es: " + texto3 );
		//insertar caracteres en una posición
		texto3.insert(6, "1");
		System.out.println( "Intercalando un 1 en la posicion 6: " + texto3 );
		//revertir el orden de la cadena
		texto3.reverse();
		System.out.println( "Y ahora texto3 invertido: " + texto3 +"\n");
	}
}