Curso básico de Java - #16 - Clases fundamentales: String

Buenas,
En este tema veremos mas a fondo la clase String, la cual ya hemos mencionado y usado muchas veces.


Sobre String

  • A pesar que String es una clase, los objetos de esta no necesitan (aunque se pude) ser instanciados de la manera tradicional (new String()) ya que Java maneja los valores String ("Mi valor") como objetos del mismo.
    Eso nos permite hacer cosas como esta:

    "Mi cadena :)".charAt(0);  // Devuelve 'M'.
    
  • String pertenece al paquete java.lang por lo que no necesita ser importado.


Métodos de String
Pondré aquí los mas importantes por lo que si alguien quiere mas información, puede irse a la API oficial de Java.

Métodos mas usados
Método Utilidad Parámetros Devuelve Ejemplo
charAt([index]) Devuelve un el carácter de la posición recibida por parametro. Posición empezando por 0 (int). Caracter (char). miCadena.charAt(1); // Devuelve 'o'.
length() Devuelve el tamaño (cantidad de caracteres) de la cadena Nada. Cantidad de caracteres (int). miCadena.length(); // Devuelve 10.
substring([index]) Devuelve otra cadena con los caracteres desde el indice hasta el final de la cadena original Posición inicio sub-cadena (int). Sub-cadena (String). miCadena.substring(2); // Devuelve "la mundo".
substring([index], [index]) Devuelve otra cadena con los caracteres desde el primer indice hasta el segundo Posición inicio sub-cadena (int). Posición final (la ultima no se devuelve) sub-cadena (int). Sub-cadena (String). miCadena.substring(0, 7); // Devuelve "Hola m".
toLowerCase() Devuelve una cadena basada en la original con todos los caracteres alfabéticos en minúsculas. Nada. Cadena en minúsculas (String). miCadena.toLowerCase(); // Devuelve "hola mundo".
toUpperCase() Devuelve una cadena basada en la original con todos los caracteres alfabéticos en mayúsculas. Nada. Cadena en mayúsculas (String). miCadena.toUpperCase(); // Devuelve "HOLA MUNDO".
equals([String]) Comprueba si dos cadenas son iguales. Cadena a comparar con la original (String). Valor booleano. miCadena.equals("HoLa mUnDo"); // Devuelve false.
equalsIgnoreCase([String]) Igual que equals() pero no distingue entre mayúsculas y minusculas. Cadena a comparar con la original (String). Valor booleano. miCadena.equalsIgnoreCase("HoLa mUnDo"); // Devuelve true.
contains([String]) Comprueba si la cadena original contiene la sub-cadena proporcionada. Cadena a buscar en la original (String). Valor booleano. miCadena.contains("Hola"); // Devuelve true.
startsWith([String]) Comprueba si la cadena original empieza con la sub-cadena proporcionada. Cadena a comprobar (String). Valor booleano. miCadena.startsWith("mundo"); // Devuelve false.
endsWith([String]) Comprueba si la cadena original termina con la sub-cadena proporcionada. Cadena a comprobar (String). Valor booleano. miCadena.endsWith("mundo"); // Devuelve true.
indexOf([char]) Devuelve la posición de la primera ocurrencia del carácter proporcionado. Caracter a buscar (char). Posición de la primera ocurrencia del carácter (int). miCadena.indexOf('o'); // Devuelve 1.
lastIndexOf([char]) Devuelve la posición de la ultima ocurrencia del carácter proporcionado. Carácter a buscar (char). Posición de la ultima ocurrencia del carácter (int). miCadena.indexOf('o'); // Devuelve 9.
replace([String], [String]) Remplaza todas las ocurrencias de la primera cadena proporcionada por la segunda. Sub-cadena a remplazar (String). Nueva ub-cadena (String). Cadena original remplazada (String). miCadena.replace("Hola", "Adiós"); // Devuelve "Adiós mundo".
matches([reexpresion]) Comprueba si la cadena original coincide con la expresión regular proporcionada. Expresion con la que comprobar (String). Valor booleano. miCadena.matches("^[hH]ola"); // Devuelve true.

Clase de ejemplo

Cadenas.java
import java.util.Scanner;

public class Cadenas
{
	public static void main(String[] args)
	{
		// Declarar e inicializar objeto Scanner.
		Scanner entrada = new Scanner(System.in);
		
		// Pedir y almacenar el nombre del usuario.
		System.out.print("Proporciona tu nombre: ");
		String nombre = entrada.nextLine();
		
		// Verificar si el nombre contiene algún número usando una expresión regular.
		if (nombre.matches(".*\\d.*"))
		{
			System.out.println(" > ¿Enserio tu nombre tiene números? ·_·");
		}
		
		// Imprimir la primera letra del nombre.
		System.out.println(" > La primera letra de tu nombre es: " + nombre.charAt(0) + ".");
		
		// Imprimir la última letra del nombre.
		System.out.println(" > La ultima letra de tu nombre es: " + nombre.charAt(nombre.length() - 1) + ".");
		
		// Imprimir la cantidad de caracteres del nombre.
		System.out.println(" > Tu nombre tiene " + nombre.length() + " letras.");
		
		// Verificar si el nombre contiene la cadena "hola mundo" (ignorando mayúsculas/minúsculas).
		if (nombre.toLowerCase().contains("hola mundo"))
		{
			System.out.println(" > No me creo que tu nombre sea " + nombre + ". XD");
		}
		
		String nombreAlrreves = "";
		// Recorrer el nombre desde el final hacia el inicio, agregando cada letra a la nueva cadena.
		for (int i = nombre.length() - 1; i >= 0 ; i--)
		{
			nombreAlrreves += nombre.charAt(i) + "";
		}
		
		// Imprimir el nombre al revés.
		System.out.println(" > Tu nombre al invertido es " + nombreAlrreves + ".");
		
		// Imprimir la primera mitad del nombre.
		System.out.println(" > La primera mitad de tu nombre es " + nombre.substring(0, nombre.length() / 2) + ".");
		
		// Imprimir la segunda mitad del nombre.
		System.out.println(" > La segunda mitad de tu nombre es " + nombre.substring(nombre.length() / 2) + ".");
	}
}
Output de prueba
Proporciona tu nombre: Sugoli15
 > ¿Enserio tu nombre tiene números? ·_·
 > La primera letra de tu nombre es: S
 > La ultima letra de tu nombre es: 5
 > Tu nombre tiene 8 caracteres.
 > Tu nombre invertido es 51iloguS.
 > La primera mitad de tu nombre es Sugo.
 > La segunda mitad de tu nombre es li15.

En el siguiente tema volveremos a la POO y hablaremos un poco de la herencia.

2 Me gusta