You are on page 1of 9

JAVA

Il tipo String

La speciale classe String


La stringa NON un tipo di dato primitivo ma una istanza

della classe java.lang.String: un oggetto che incapsula


una sequenza di caratteri alfanumerici compresi fra "...".

E una classe final, cio non pu essere estesa.

Le stringhe sono immutabili: il loro valore non cambia


dopo la costruzione (neanche invocando i suoi metodi,
ovvero non esiste nessun metodo che cambia il contenuto
interno delloggetto!)

Sono oggetti speciali trattati quasi come tipi primitivi:

costruzione implicita, senza loperatore new


concatenazione con operatore +
incremento con operatore +=

Costruzione di stringa
String s = "hello";
//NB: senza operatore new!
//con tale 'assegnazione' l'oggetto s stato costruito!
//la precedente sintassi equivale a:
char[] temp = {'h','e','l','l','o'};
String s = new String(temp);
String s1 = new String(); //costruzione stringa vuota
String s2 = ""; //implicita costruzione stringa vuota
System.out.println(s2.length()); //restituisce 0

//inizializza il riferimento a null:


String str = null; //non si possono invocare metodi!!
System.out.println(str.length()); //errore in runtime:
NullPointerException

Concatenazioni:
operatori e metodi
Operatore di concatenazione (+):
String s = "mad";
String r = s + " world"; //equivale al metodo:
r = s.concat(" world");

stringa1

stringa2

stringa3

Operatore di incremento (+=):


4

s += " world"; //equivale ai seguenti:


s = s + " world";
s = s.concat(" world");

Metodi di String
Alcuni metodi della classe String:
restituisce la lunghezza della stringa.
2. char charAt(int i)
ritorna li-esimo carattere.
3. String substring(int i) ritorna la sottostringa dalli-esimo carattere
4. int indexOf(int ch)
ritorna lindice della prima occorrenza.
del 'carattere' in parametro.
5. int indexOf(int ch, int fromIndex) ritorna lindice della prima
occorrenza del 'carattere' in parametro,
iniziando ad analizzare dallindice dato.
6. boolean endsWith(String suffix) verifica se la stringa termina
con la stringa in parametro.
7. String toUpperCase()
restituisce una stringa con stessa sequenza
di caratteri ma tutti convertiti in maiuscolo.
8. String[] split(String regex) restituisce un array di stringhe
contenente i pezzi di stringa delimitati da regex (regular expres.)
1. int length()

Metodi di String:
confronti fra stringhe
Nella classe String sono disponibili:

boolean equals(String anotherString)

torna true/false se il contenuto delle strighe uguale/diverso.

int compareTo(String anotherString)

confronta le stringhe rispetto allordine alfabetico: torna 0 se uguali,


torna < 0 se this stringa < anotherString, altrimenti torna > 0.

Attenzione:
Listruzione s==t fa sempre un confronto tra riferimenti!
Due riferimenti uguali puntano alla stessa stringa.
Due stringhe uguali potrebbero non avere stesso riferimento.

if( s==t ) //ERRATO?


istruzioni;

if(s.equals(t))
istruzioni;

//GIUSTO!

La classe StringBuffer
La classe final StringBuffer fornisce stringhe
che possono essere modificate.

E utilizzata per creare e manipolare

dinamicamente sequenze di caratteri.

La lunghezza fissata alla creazione, ma pu


essere estesa e recuperata.

StringBuffer funzionalit
Costruttori e alcuni metodi:
StringBuffer()
crea un buffer vuoto di lunghezza 16 char

StringBuffer(int len)
crea un buffer vuoto di lunghezza len char

StringBuffer(String str)
crea un buffer con la stringa str e lungo: str.length()+16 char

StringBuffer insert(int offset, tipoDato var)


metodo che inserisce alla posizione offset il tipoDato
contenuto in var, trasformandolo in String.

StringBuffer append(tipoDato var)


8

metodo che appende in coda il tipoDato contenuto in var,


trasformandolo in String.

La classe StringBuilder
La classe StringBuilder levoluzione (dalla
versione JSE5) della StringBuffer.

Si utilizza per gestire stringhe che

possono/devono essere modificate.

Non thread-safe, cio i suoi metodi non sono

sincronizzati (senza il modificatore synchronized).

I metodi sono simili a quelli di StringBuffer.

You might also like