Stringhe

Le stringhe sono sequenze di caratteri. Nei precedenti programmi le stringhe sono state già usate, anche se non erano state introdotte formalmente. La istruzione di stampa System.out.println è infatti una istruzione che stampa una stringa. Per dire all'interprete come è fatta una stringa si può mettere la sequenza di caratteri che la compone fra virgolette doppie. Per esempio, la sequenza di caratteri 'abcd efgs' viene rappresentata come "abcd efgs". Si noti che una stringa può anche contenre degli spazi, per cui "abcd efgs" è una unica stringa. Dal momento che la istruzione System.out.println stampa una stringa, se si esegue System.out.println("abcd efgs") viene stampata la stringa 'abcd efgs'.

Le stringhe sono il primo tipo di dati non numerico che vediamo. Mentre int e double erano rappresentazione di numeri (interi e reali) le stringhe sono sequenze di caratteri. Per il resto, sono tipi di dati come gli altri, per cui si possono definire e usare variabili di tipo stringa. La dichiarazione tipica è la seguente:

String a;

Per esempio, il programma PrimaStringa.java definisce una variabile di tipo stringa, gli assegna una valore (che in questo caso non può essere un numero, ma deve essere una stringa), e la stampa.

/*
  Definisce e usa una variabile di tipo stringa.
*/

class PrimaStringa {
  public static void main(String[] args) {
    String a;

    a="Questa e' una stringa.";

    System.out.println(a);
  }
}

Le espressioni che è possible scrivere con le stringhe sono diverse da quelle sui numeri. Per esempio, l'operatore + nel caso dei numeri rappresenta la normale somma numerica, mentre nel caso delle stringhe è la concatenazione, cioè mette le due stringhe l'una dietro l'altra. Per esempio, la espressione "abcd efg"+"12c" rappresenta la stringa "abcd efg12c", che è la stringa ottenuta mettendo il secondo operando dopo il primo.

Un caso particolare da tenere a mente è che quando si un numero a una stringa, il numero viene prima convertito in stringa, e poi viene fatta la normale concatenazione. Per esempio, la espressione "questo numero vale"+12 dà come risultato la stringa "questo numero vale12". Si faccia attenzione che il numero 12 è molto differente dalla stringa "12". Per esempio, 12+416 come risultato, mentre "12"+4"124". La seconda espressione è infatti la somma di una stringa e di un numero, per cui il numero 4 viene convertito nella stringa "4"; a questo punto si fa la somma fra le due stringhe "12" e "4". Usando la regola della concatenzione, si mette il carattere 4 subito dopo i caratteri 12, per cui si ottiene la stringa 124.

Il programma Concatenazione.java contiene alcuni esempi di operazioni su stringhe.

/*
  Alcuni esempi di concatenazioni fra stringhe.
*/

class Concatenazione {
  public static void main(String[] args) {
    int a=10, b=20, c;
    String z="abcd";
    String x="123";
    String y;

    c=a+b;	// questa e' una somma fra interi: risultato 30

    System.out.println(c);

    y=x+z;	// concatenazione fra stringhe: risultato "123abcd"

    System.out.println(y);

    y=12+"3";	// concatena una stringa a un intero: ris. "123"

    System.out.println(y);

    y=c+x;	// concatena stringa e intero: risultato "30123"

    System.out.println(y);
  }
}

La regola generale è molto semplice: se si somma un intero con una stringa, si ottiene una stringa. Una cosa simile succede sommando un intero a un reale: si ottiene un reale.