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"); } }