Skip to content

2.7 Cadenas de caracteres. La clase String

Cadenas de caracteres

Hasta ahora hemos utilizado literales de cadenas de caracteres que, como sabemos, se ponen entre comillas dobles, como en la siguiente expresión

System.out.println("Hola");

Para almacenar cadenas de caracteres en variables se utiliza la clase String. String se encuentra definida en el paquete java.lang. Recordemos que no es necesario importar este paquete para utilizar sus clases.

La forma de String es la siguiente:

String variable = new String("texto");

Ejemplo:

String nombre = new String("Javier");
System.out.println("Mi nombre es " + nombre);

Sin embargo, debido a que es una clase que se utiliza ampliamente en los programas, Java permite una forma abreviada de crear objetos String:

String nombreVariable = "texto";    

Ejemplo:

String nombre = "Javier";
System.out.println("Mi nombre es " + nombre);

Leer cadenas desde teclado

Clase Scanner

Para leer cadenas de caracteres desde teclado podemos utilizar la clase Scanner. Ésta dispone de dos métodos para leer cadenas:

  • next(): Lee desde la entrada estándar (teclado) una secuencia de caracteres hasta encontrar un delimitador (un espacio). Devuelve un String.
  • nextLine(): Lee desde la entrada estándar (teclado) una secuencia de caracteres hasta encontrar un salto de línea. Devuelve un String.

Ejemplo:

1
2
3
4
5
Scanner tec = new Scanner(System.in);
//De lo que introduce el usuario, lee la 1º palabra.
String nombre = tec.next();
//Lee lo que introduce el usuario hasta que pulsa intro.
String nombreCompleto = tec.nextLine(); 

Ejemplos de la UT01 utilizando Scanner (compatible con los IDE's)

A continuación vamos a ver los mismos ejemplos de la Unidad Temática 01, pero utilizando la clase Scanner que sí es compatible con los IDE's. Para poder usar la clase Scanner necesitamos importar el paquete: java.util.Scanner.

import java.util.Scanner;

public class EjemploUD02 {

    public static void main(String[] args) {

        Scanner teclado = new Scanner(System.in);

        //Introducir texto desde teclado
        String texto;
        System.out.print("Introduce un texto: ");
        texto = teclado.nextLine(); 
        System.out.println("El texto introducido es: "+texto);

        //Introducir un número entero desde teclado
        String texto2;
        int entero2;
        System.out.print("Introduce un número: ");
        texto2 = teclado.nextLine(); 
        entero2 = Integer.parseInt(texto2);
        System.out.println("El número introducido es:"+entero2);

        //Introducir un número decimal desde teclado
        String texto3;
        double doble3;
        System.out.print("Introduce un número decimal: ");
        texto3 = teclado.nextLine(); 
        doble3 = Double.parseDouble(texto3); // convertimos texto a doble
        System.out.println("Número decimal introducido es: "+doble3);
    }
}

ejemplo

La clase String

Además de permitir almacenar cadenas de caracteres, String tiene métodos para realizar cálculos u operaciones con ellas.

Así por ejemplo, la clase tiene un método toUpperCase() que devuelve el String convertido a mayúsculas. El siguiente ejemplo ilustra su uso:

String nombre = "Javier";
System.out.println(nombre.toUpperCase()); // Se muestra JAVIER por pantalla

Accede a la documentación en línea de Java y estudia los siguientes métodos de la clase:

  • charAt
  • indexOf
  • subString
  • toLowerCase
  • trim

printf o format

El método printf() o format() (son sinónimos) utilizan unos códigos de conversión para indicar el contenido a mostrar de qué tipo es. Estos códigos se caracterizan porque llevan delante el símbolo %, algunos de ellos son:

  • %c: Escribe un carácter.
  • %s: Escribe una cadena de texto.
  • %d: Escribe un entero.
  • %f: Escribe un número en punto flotante.
  • %e: Escribe un número en punto flotante en notación científica.

Por ejemplo, si queremos escribir el número float 12345.1684 con el punto de los miles y sólo dos cifras decimales la orden sería:

System.out.printf("%,.2f\n", 12345.1684);

Esta orden mostraría el número 12.345,17 por pantalla.

Otro ejemplo seria:

1
2
3
System.out.format("El valor de la variable float es " +
     "%f, mientras que el valor del entero es %d" +
     " y el string contiene %s\n", variableFloat, variableInt, variableString); 

ejemplo

Puedes investigar más sobre printf o format en este enlace.

Salida de error

La salida de error está representada por el objeto System.err. No parece muy útil utilizar out y err si su destino es la misma pantalla, o al menos en el caso de la consola del sistema donde las dos salidas son representadas con el mismo color y no notamos diferencia alguna. En cambio en la consola de varios entornos integrados de desarrollo como Visual Studio Code, NetBeans o Eclipse la salida de err se ve en un color diferente. Teniendo el siguiente código:

System.out.println("Salida estándar por pantalla");
System.err.println("Salida de error por pantalla");

Tanto NetBeans como Eclipse mostraran el mensaje err en color rojo.