LE STRINGHE IN JAVA


In Java è una sequenza finita di caratteri (alfabeto Unicode) da attribuire al tipo String. Il tipo String è una classe e non un tipo primitivo. Quindi ogni stringa in Java è un oggetto. Per questo motivo, a differenza di altri linguaggi, posso effettuare operazioni sulle stringhe mediante i metodi della classe String.

Il valore assegnato a un oggetto stringa va racchiuso tra doppi apici :


“Ciao”


per dichiarare una variabile stringa ho due modi, il primo equivale a quello dei tipi primitivi :


String saluto; //variabile di tipo String con contenuto nullo, perché questo è quello che accade a oggetti non inizializzati.

String saluto = “Ciao”; // la variabile viene inizializzata, le virgolette sono solo il contenitore


per dichiarare un oggetto, posso usare il modo usato con le classi (String è una classe particolare)

saluto =new String(“Ciao”);


Vediamo alcuni metodi della classe String :


length()

restituisce un numero intero corrispondente al numero di caratteri della stringa. Ecco come si usa :


saluto.length(); //con il valore sopra da come valore 4

“buongiorno”.length(); // risponderà con un 10

“”.length(); // restituisce uno 0, cioè una stringa vuota


charAt(int pos)

restituisce il carattere della stringa corrispondente alla posizione passata


String saluto = “Ciao”;

saluto.charAt(3); // restituisce 'o', infatti il primo carattere è nella posizione 0


nota – il numero passato va da 0 a length()-1.


concat(String nomestringa)

crea una nuova stringa frutto dell'unione, a destra della stringa principale, la stringa passata. Ecco alcuni esempi


String var1, var2, var3;

var1=“Buon”;

var2=” Natale”;

var3=var1.concat(var2); // var3 è una nuova stringa uguale a “Buon Natale”


nota – la concatenazione si ottiene anche con l'uso dell'operatore +


substring(int inizio)

crea una nuova stringa. Questa contiene i caratteri dalla posizione passata (inclusa) della stringa su cui si applica all'ultimo carattere. Un esempio


String var1, var2;

var1=”Buon Natale”;

var2=var1.substring(5); // var2 conterrà “Natale”


substring(int inizio, int fine)

crea una nuova stringa. Questa contiene i caratteri della stringa dalla posizione passata nel primo valore fino alla posizione (esclusa) definita dal secondo valore passato. Un esempio


String var1, var2;

var1=”Buon Natale”;

var2=var1.substring(5,8); // var2 conterrà “Nat”


indexOf(char carattere)

verifica se la stringa su cui si lavora contiene il carattere passato. Come risposta, se lo trova indica la posizione, se ne trova più di uno fornisce lo stesso risultato, cioè la posizione del primo carattere trovato. Se non lo trova restituisce -1. Alcuni esempi


“Buon Natale”.indexOf('N'); // restituisce 5

var1=”Buon Natale”;

var1.indexOf('a '); // restituisce del primo 'a' trovato, cioè 6

var1.indexOf('v'); // restituisce -1


indexOf(String “stringa”)

verifica se la stringa passata è contenuta nella stringa su cui si lavora. Se la trova restituisce la posizione in cui parte, altrimenti restituisce -1. Qualche esempio


var1=”Buon Natale”;

var1.indexOf(“tale”); // restituisce 7

var1.indexOf(“Buo”); // restituisce 0

var1.indexOf(“pippo”); // restituisce -1


lastIndexOf(String “stringa”)

verifica se la stringa analizzata contiene la stringa passata e da che posizione parte, se ce ne sono più di una segnala l'ultima. Vediamo un esempio


var1=”mamma”;

var1.lastIndexOf(“ma”); // restituisce 3 perché considera l'ultimo e non il primo come nel metodo precedente


lastIndexOf(char 'carattere');

verifica se la stringa analizzata contiene il carattere passato e ne restituisce la posizione. Se appare più volte viene restituita la posizione dell'ultima coincidenza trovata.


var1=”mamma”;

var1.lastIndexOf('m'); // restituisce 3 perché considera l'ultimo


valueOf(valore)


compareTo(String)

fa il confronto tra due stringhe. Se la prima è minore (confronto con valore numerico dei caratteri del codice unicode) ritorna un numero negativo, se sono uguali ritorna 0 e se la prima stringa è maggiore ritorna un valore positivo. Un esempio


var1 = “abc”;

var2 = “def”;

int pippo = var1.compareTo(var2); // ritorna un valore negativo


equals(String)

controlla se le due stringhe sono identiche.

Se scriviamo le seguenti istruzioni :


String var1 = “pippo”;

….

….

String var2 =”pippo”;


il sistema Java punta per entrambe le variabili alla stessa locazione che contiene “pippo”, in questo modo risparmia spazio nella memoria. Quindi se scrivo :


var1 == var2


il risultato è true. Il motivo che entrambe contengono la stessa locazione di memoria che permette di risalire al valore a loro assegnato. Se il valore viene inserito da tastiera o con la parola chiave new la cosa cambia. Infatti nelle istruzioni successive :


String var1=new String(“pluto”);

String var2=new String(“pluto”);


il sistema assegna alle due variabili locazioni diverse, quindi non è possibile confrontare le due variabili con l'operatore di uguaglianza “==”. Per vedere se due stringhe sono uguali devo usare il metodo equals() . Vediamo un esempio sfruttando le ultime due istruzioni :


var1.equals(var2); // restituisce in questo caso true


esiste anche un metodo equivalente che permette di usare intern() :


var1.intern()==var2.intern();


un metodo equivalente ma che non tiene conto del case (cioè tratta le minuscole e le maiuscole allo stesso modo)


var1=”PIPPO”;

var2=”pippo”;

var1.equalsIgnoreCase(var2); // restituisce true

var1.equals(var2); // restituisce false


toUpperCase()

permette di riscrivere la stringa con caratteri solo maiuscoli. La stringa originale rimane invariata.


toLowerCase()

permette di riscrivere la stringa con caratteri solo minuscoli. La stringa originale rimane invariata.



E' possibile convertire una variabile di un tipo primitivo in una variabile String

valueOf


esempio


int pippo = 25;

Integer.toString(pippo);




E' possibile convertire una variabile String in una variabile di tipo primitivo (numerico!!!)


Boolean.parseBoolean(String);

Byte.parseByte(String, int base);

Short.parseShort(String, int base);

Integer.parseInt(String, int base);

Long.parseLong(String, int base);

Float.parseFloat(String);

Double.parseDouble(String);


esempio

String pippo = “25”;

Integer.parseInt(pippo); //converte la stringa pippo in un numero intero 25

Integer.parseInt(pippo, 16); // come sopra ma il valore è espresso in esadecimale