Le stringhe

Una stringa è una sequenza di caratteri

Si tratta di un tipo composto, ossia sono oggetti.

Sulle stringhe ci sono delle eccezioni (rispetto alle regole che valgono per tutti gli altri oggetti).


Stringhe: programma di esempio

Non serve fare import (serve se ci sono anche punti ecc.)

class UnaStringa {
  public static void main(String args[]) {
    String s;

    s="abcd efgh";

    System.out.println(s);
  }
}

Il significato è chiaro: viene definita una variabile stringa, ci viene messa la sequenza di caratteri abcd efgh, che poi viene stampata.

Domanda: le stringhe sono oggetti. Come mai non si fa new?


Stringhe: definizione

  String s;

Solita dichiarazione di variabile

La new non è necessaria (vedi prox. pagina).


Stringhe: creazione

Regola generale: gli oggetti vanno creati con new, a meno che non siano il risultato della valutazione di un metodo.

Caso delle stringhe:

  s="abcd efgh";

Questa istruzione crea la stringa

Si può pensare che l'istruzione s="abcd efgh"; sia una invocazione di metodo che crea la zona di memoria e ci mette dentro la sequenza di caratteri.


Stringhe: uso

Le stringhe si possono stampare:

  System.out.println(s);

Vengono stampati i caratteri (senza le virgolette).


Dichiarazione/creazione

Per valori interi o reali, basta la sola dichiarazione.

Per gli oggetti, servono due zone di memoria.

La dichiarazione crea la prima, la creazione crea la seconda.

dichiarazione di variabile
crea il rettangolo piccolo accanto al nome di variabile
creazione
crea il rettangolo grande che contiene i dati

La creazione si può fare con:


Stringhe: manipolazione

Alcuni metodi sulle stringhe:

length
senza argomenti, dà il numero di caratteri della stringa
concat
concatena la stringa con un'altra; non modifica la stringa, ma ne crea una nuova
substring
crea una nuova stringa che contiene solo una sezione di quella vecchia

Per esempio, x=s.length(); mette nella variabile intera x il numero di caratteri che si trovano nella stringa s.

c=a.concat(b) crea una nuova stringa che è la concatenazione di a e b, ossia la nuova stringa ottenuta mettendo i caratteri di b subito dopo quelli di a. Il metodo crea una nuova stringa.


Indici di una stringa

Alcuni metodi riguardano parti di una stringa.

Per esempio, substring prende una parte della stringa.

Come faccio a capire quali caratteri devo prendere?

Si usano degli indici: il primo carattere ha indice 0, il secondo 1, ecc.


Indici, graficamente

La stringa "werasdew" viene vista come una sequenza di caratteri, ognuno in una casella separata.

Ogni casella ha un numero di posizione:

I numeri di posizione si chiamano indici.

Notare che una stringa può anche contenere più volte lo stesso carattere, in posizioni diverse.

Invece, ogni indice identifica un carattere solo all'interno della stringa.

Motivo: non ha senso dire: trova la sottostringa dal carattere w al carattere e, dato che questi caratteri compaiono più volte nella stringa.


Uso degli indici

Il metodo substring prende solo un frammento della stringa originaria.

Viene creata una nuova stringa, in cui viene copiata una parte della stringa originaria.

Servono due argomenti, che dicono dove iniziare a copiare e dove terminare.

  t=s.substring(3,6);

Il significato degli argomenti:

primo:
il primo carattere da copiare
secondo:
il primo carattere da non copiare

Creo la nuova stringa, in cui copio i caratteri che stanno nelle posizioni 3, 4 e 5. Il carattere 6 non lo copio, perchè è il primo carattere da non copiare (il secondo argomento).

Notare che i numeri di indice della nuova stringa partono comunque da 0

Ogni stringa ha numeri 0, 1, ecc, indipendentemente da come la stringa è stata ottenuta.