String è speciale
Last updated
Last updated
Una String
in Java, contiene una sequenza immutabile di caratteri unicode. A differenza del C/C++ dove una stringa è semplicemente un array di char , una String
in Java è una classe di java.lang
.
Una String
in Java è comunque spaciale. A differenza di una classe ordinaria:
Una String è associata con una string literal che ha la forma di un testo tra doppie virgolette, esempio: "Hello World". Si può assegnate una string literal direttamente a una variabile di tipo String
direttamente, senza invocare new
per creare un'istanza di String da asseganre alla variabile.
l'operatore '+' è overloaded per concatenare due operandi di tipoString
. l'operatore + non funziona con altri oggetti di tipo ad esempio Point
o Circle
.
Un oggetto di tipo String
è immutabile. Infatti il contenuto non può essere modificatouna volta che l'ggetto di tipo String
è creato. Ad esempio il metodo toUpperCase()
costruisce e ritorna una nuova String
invece di modificare il contenuto dell'oggetto String
.
Vedi per tutorial:
Esempi:
Come detto, gli oggetti di tipo String sono immutabili perchè oggetti di tipo String literals con lo stesso contenuto condividono la stessa zona di memoria nel pool delle stinghe. La modifica di una stringa causerebbe anche la modifica anche di quelle che condividono la stessa zona di memoria.
Per modificare le stringhe il JDK fornisce due classi che supportano le stringhe mutabili. Le classi sonoStringBuffer
e StringBuilder
(nel package core java.lang
) . Un oggetto di StringBuffer
oStringBuilder
è come un oggetto ordinario, che sono memorizzati nello heap e non condivisi, e quindi, possono essere modificat senza effetti indesiderati su altri oggetti.
La classe StringBuilder
fu introdotta nel JDK 1.5. E' la stessa come funzionalità di StringBuffer
, unica differenza che StringBuilder
non è synchronized per operazioni multi-thread. Tuttavia, per programmi single-thread, StringBuilder
, senza l'overhead della sincronizzazione, è più efficiente.