Introduzione agli Oggetti Stringa in Java

Concetti Chiave
  • La classe String in Java rappresenta una sequenza di caratteri ed è immutabile.
  • Le stringhe possono essere create usando le virgolette doppie o il costruttore new String().
  • La concatenazione di stringhe può essere effettuata con l'operatore +.
  • La classe String fornisce vari metodi utili come equals(), length(), e charAt().
  • Gli array di stringhe sono possibili e possono essere utilizzati per gestire collezioni di stringhe.

La classe String

Anche se la classe String sarà esaminata in profondità nelle lezioni successive, è opportuno darne una breve esplorazione ora, poiché verranno usate stringhe in alcuni dei programmi di esempio mostrati più avanti.

String è probabilmente la classe più comunemente usata nella libreria delle classi di Java. Il motivo ovvio di ciò è che le stringhe sono una parte molto importante della programmazione.

La prima cosa da comprendere sulle stringhe è che ogni stringa creata è in realtà un oggetto di tipo String. Anche le costanti stringa sono effettivamente oggetti String. Ad esempio, nell'istruzione

System.out.println("Questa è una String");

la stringa "Questa è una String" è un oggetto String.

La seconda cosa da comprendere sulle stringhe è che gli oggetti di tipo String sono immutabili; una volta che un oggetto String è stato creato, il suo contenuto non può essere alterato. Anche se questo può sembrare una seria limitazione, non lo è, per due motivi:

  • Se occorre modificare una stringa, si può sempre crearne una nuova che contenga le modifiche.
  • Java definisce classi peer di String, chiamate StringBuffer e StringBuilder, che permettono di alterare le stringhe, quindi tutte le normali manipolazioni delle stringhe sono comunque disponibili in Java. (StringBuffer e StringBuilder sono descritti nella Parte II di questo libro.)

Creazione di Stringhe

Le stringhe possono essere costruite in diversi modi. Il più semplice è usare un'istruzione come questa:

String miaStringa = "questa è una prova";

Una volta creato un oggetto String, lo si può usare ovunque sia consentito l'uso di una stringa. Ad esempio, questa istruzione visualizza miaStringa:

System.out.println(miaStringa);

Java definisce un operatore per gli oggetti String: +. Esso viene usato per concatenare due stringhe. Ad esempio, questa istruzione

String miaStringa = "Mi " + " piace " + "Java.";

fa sì che miaStringa contenga "Mi piace Java.".

Il programma seguente dimostra i concetti precedenti:

// Dimostrazione delle stringhe.
class DimostrazioneStringa {
    public static void main(String[] argomenti) {
        String strObj1 = "Prima Stringa";
        String strObj2 = "Seconda Stringa";
        String strObj3 = strObj1 + " e " + strObj2;

        System.out.println(strObj1);
        System.out.println(strObj2);
        System.out.println(strObj3);
    }
}

L'output prodotto da questo programma è mostrato qui:

Prima Stringa
Seconda Stringa
Prima Stringa e Seconda Stringa

Metodi della Classe String

La classe String contiene diversi metodi che possono essere usati. Eccone alcuni:

  • È possibile verificare se due stringhe sono uguali utilizzando equals().
  • È possibile ottenere la lunghezza di una stringa chiamando il metodo length().
  • Si può ottenere il carattere a uno specifico indice all'interno di una stringa chiamando charAt().

Le forme generali di questi tre metodi sono le seguenti:

boolean equals(secondaStr)
int length()
char charAt(indice)

Ecco un programma che dimostra questi metodi:

// Dimostrazione di alcuni metodi String.
class DimostrazioneStringa2 {
    public static void main(String[] argomenti) {
        String strObj1 = "Prima Stringa";
        String strObj2 = "Seconda Stringa";
        String strObj3 = strObj1;

        System.out.println("Lunghezza di strObj1: " + strObj1.length());

        System.out.println("Carattere all'indice 3 in strObj1: " +
            strObj1.charAt(3));

        if(strObj1.equals(strObj2))
            System.out.println("strObj1 == strObj2");
        else
            System.out.println("strObj1 != strObj2");

        if(strObj1.equals(strObj3))
            System.out.println("strObj1 == strObj3");
        else
            System.out.println("strObj1 != strObj3");
    }
}

Questo programma genera il seguente output:

Lunghezza di strObj1: 12
Carattere all'indice 3 in strObj1: s
strObj1 != strObj2
strObj1 == strObj3

Array di Stringhe

Naturalmente, è possibile avere array di stringhe, proprio come è possibile avere array di qualsiasi altro tipo di oggetto. Ad esempio:

// Dimostrazione degli array di Stringhe.
class DimostrazioneStringa3 {
    public static void main(String[] argomenti) {
        String[] str = { "uno", "due", "tre" };

        for(int i = 0; i < str.length; i++)
            System.out.println("str[" + i + "]: " +
                str[i]);
    }
}

Ecco l'output di questo programma:

str[0]: uno
str[1]: due
str[2]: tre

Come si vedrà nella prossima lezione, gli array di stringhe svolgono un ruolo importante in molti programmi Java.