In Java le stringhe non sono tipi primitivi ma appartengono alla classe String. Vengono memorizzate in un’area di memoria chiamata string pool. Se tue variabili di tipo stringa hanno il medesimo contenuto, puntano alla stessa identica area di memoria. Esistono due modi per creare una stringa, il primo é scrivendola direttamente nel codice, il secondo é attraverso il costruttore della classe String.
//Primo caso
String s = “Questa é una stringa”;
//Secondo caso
Stringa stringa = new String(“Questa é una stringa”);
L’utilizzo del secondo metodo comporta l’istanziatura di un nuovo oggetto a sé stante rispetto ad un eventuale ulteriore secondo oggetto istanziato attraverso la stessa modalità.
Concatenazione di stringhe
Le stringhe possono essere concatenate allo scopo di creare una nuova stringa contenente i dati delle due, che continuano il loro ciclo vitale a prescindere da ciò che accadrà alla nuova stringa. Per concatenare due stringhe viene utilizzato l’operatore “+”.
Confronto tra stringhe
Le stringhe possono essere confrontate per verificare se contengono la stessa sequenza di caratteri. Questo avviene attraverso il metodo equals(), che restituisce il valore booleano true in caso affermativo, o false in caso negativo.
NB: diversamente da quanto accade in altri linguaggi, in Java le stringhe non possono essere confrontate attraverso l’ausilio dell’operatore di confronto ==, perché le stringhe in Java sono oggetti non sono variabili.
Analisi di stringhe
I metodi per la manipolazione delle stringhe sono contenuti nella classe String. Tra questi, degni di nota, sono il metodo lenght(), che restituisce il numero di caratteri che la compongono, ed il metodo charAt() che restituisce il carattere presente ad una certa posizione.
Le sottostringhe
Il metodo substring() permette di estrarre una porzione di stringa (chiamata sottostringa), e di manipolarla. Accetta due argomenti: il primo é l’indice del primo elemento da estrarre, il secondo dell’ultimo elemento da estrarre.
String s = “Dott. Bianchi Roberto”;
String cognome = s.substring(6, 13);
System.out.println(“Il cognome é ”+ cognome);
Altri tipi di confronto
Il linguaggio Java mette a disposizione molte altre funzionalità che permettono di verificare se una stringa inizia con una determinata sottostringa, oppure di individuare la posizione di una determinata sottostringa. Per verificare se una stringa inizia con una determinata sottostringa è possibile utilizzare il metodo startsWith(), così come il metodo endsWith() sarà in grado di dirci come termina. Il metodo indexOf() restituisce invece l’indice di una sottostringa, o -1 in caso che questa non sia presente.
String s = “Dott. Bianchi Roberto”;
int posNome = s.indexof(“Roberto”);
System.out.println(“Il nome inizia dalla posizione:” +posNome);
Buffer stringhe
Le stringhe in Java sono oggetti immutabili per cui ogni operazione svolta su di esse comporta la creazione di una nuova stringa, fenomeno per cui può determinarsi l’allocamento di una grande quantità di memoria. Una valida opzione é l’utilizzo degli array di caratteri che, in ragione della complessità di manipolazione, possono beneficiare di una libreria ad essi dedicata, la classe StringBuffer. Questa particolare classe si avvale di 3 tipologie di metodi:
- il metodo append();
- il metodo insert();
- altri metodi di ricerca, inversione, estrazione e sostituzione.
Esempio di utilizzo dello StringBuffer:
//Creazione oggetto di classe StringBuffer
StringBuffer ciao = new StringBuffer(“Ciao”);
//Accodamento di una ulteriore stringa
ciao.append(“Pippo”);
//Inseriamo uno spazio
ciao.insert(4, “ “); //Out CiaoPippo
Metodo | Descrizione |
---|---|
char charAt(int) | Restituisce il carattere alla data posizione |
stringBuffer delete (int, int) | Elimina i caratteri nell’intervallo |
int indexOf(String) | Restituisce la posizione della sottostringa indicata |
int lenght() | Restituisce il numero di caratteri |
stringBuffer replace(int, int, String) | Sostituisce la sottostringa |
stringBuffer reverse() | inverte l’ordine dei caratteri |
string substring(int, int) | Restituisce la sottostringa individuata |