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).
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?
String s;
Solita dichiarazione di variabile
La new non è necessaria (vedi prox. pagina).
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.
Le stringhe si possono stampare:
System.out.println(s);
Vengono stampati i caratteri (senza le virgolette).
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.
La creazione si può fare con:
Alcuni metodi sulle stringhe:
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.
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.
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.
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:
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.