Corso di Laurea in Biotecnologie
Informatica
(Programmazione)
Le stringhe di caratteri in Java
Anno Accademico 2009/2010
1
Le stringhe
Una stringa è una sequenza di caratteri
(lettere, cifre, segni di punteggiatura, etc.). In
Java non esiste un tipo primitivo che
rappresenti le stringhe (il tipo primitivo char
rappresenta infatti i singoli caratteri e non le
stringhe). Esiste però un tipo NON primitivo
che consente di manipolare le stringhe  il tipo
String.
In Java è possibile dichiarare una variabile di tipo String
e assegnarle una stringa di caratteri. Ad esempio, nel
frammento di codice della successiva slide, si dichiara una
variabile String che si chiama frase e le si assegna la
stringa “Hello world!”:
2
Le stringhe
String frase;
frase=“Hello world!”;
System.out.println(frase);
L’esecuzione di questo codice stampa:
Hello world!
3
Letterali stringa e carattere
Letterale stringa  sequenza di caratteri
racchiusa tra doppi apici
esempio: “Hello world!” è un letterale stringa
composto da 12 caratteri
Letterale carattere  carattere
appartenente al codice Unicode racchiuso tra
singoli apici
esempio: ‘a’ è un letterale carattere
Attenzione! La scrittura ‘a’ denota un singolo carattere, mentre
la scrittura “a” denota una stringa composta di un singolo carattere
4
La dichiarazione
In Java la dichiarazione con inizializzazione
di una stringa ha la seguente sintassi:
String <string_id>=<string_value>;
Esempio:
Identificatore (o nome) della stringa
String isString=“Hello!”;
Questa dichiarazione costruisce una variabile di tipo String
e la inizializza con la stringa di sei caratteri “Hello!”
5
String vs char
Attenzione! Una variabile di tipo (primitivo) char
può contenere un unico carattere, mentre una
variabile di tipo (non primitivo) String può
contenere una sequenza di caratteri. Il valore è
racchiuso tra doppi apici (“) per la variabile di tipo
String e tra singoli apici (‘) per la variabile di tipo
char. Ad esempio:
char carattere;
carattere=‘d’; //Singolo carattere
String stringa, carStringa;
stringa=“programmazione”;
//Stringa
carStringa=“d”;
//Stringa di un solo carattere
carattere=“d”; //Assegnamento errato!!
carString=‘d’; //Assegnamento errato!!
6
Organizzazione di String
Si riconsideri il codice:
String frase;
frase=“Hello world!”;
Ogni carattere ha una ben precisa posizione all’interno
della stringa:
H e
l
l
o
w o r
l
d
!
0 1 2 3 4 5 6 7 8 9 10 11
‘H’ è in posizione 0, ‘e’ in posizione 1, ‘l’ in
posizione 2, …, fino ad arrivare a ‘d’ in posizione
10 e a ‘!’ in posizione 11 (ultima posizione)...
7
Organizzazione di String
… Ad esempio il 3° carattere è quello in
posizione 2 (‘l’). Più in generale il carattere n° di
una stringa è il carattere in posizione (n-1).
La lunghezza L di una stringa è data dal numero
di caratteri che contiene. In questo caso si ha
L=12 (cioè 11+1, ovvero posizione dell’ultimo
carattere ‘!’ incrementata di 1)
8
Concatenazione di stringhe
La concatenazione di stringhe avviene tramite
l’operatore +. Ad esempio il codice seguente:
String str1=“Questa è una ”;
String str2=“concatenazione ”;
String str3=“di tre stringhe”;
String str4;
str4=str1+str2+str3;
System.out.println(str4);
produce la stampa:
Questa è una concatenazione di tre stringhe
9
Manipolazione di stringhe
Il tipo String, dal momento che NON è
primitivo e ha una struttura interna complessa,
mette a disposizione alcuni metodi (o
procedure) per la manipolazione delle stringhe.
Data una variabile String identificata dal
nome <string_id>, si può invocare un suo
metodo identificato dal nome <method>,
tramite la seguente sintassi:
<string_id>.<method>(<params>);
dove <params> è la lista degli argomenti che il
metodo <method> riceve in ingresso
10
Manipolazione di stringhe
… Ad esempio il seguente codice dichiara una
variabile String e usa il suo metodo length
per ottenerne la lunghezza:
String str;
str=“Hello world!”;
int lunghezza;
lunghezza=str.length();
System.out.println(lunghezza);
Il metodo length restituisce la lunghezza della
stringa di caratteri contenuta nella variabile che lo
invoca (in questo caso la variabile str) e non ha
argomenti in ingresso.
11
Manipolazione di stringhe
Nel seguito vediamo i metodi del tipo
String che servono per:
 calcolare la lunghezza di una stringa (già
visto…)
 ottenere il carattere in una data posizione
 confrontare due stringhe
 convertire una stringa in caratteri minuscoli
 convertire una stringa in caratteri maiuscoli
12
Il metodo length
Descrizione: restituisce il numero di caratteri
della stringa che invoca il metodo
Tipo restituito: int
Sintassi: <string_id>.length();
Esempio:
String str=“Hello world!”;
int lunghezza;
lunghezza=str.length();
System.out.println(lunghezza);
Questo frammento di codice
stampa la lunghezza della
stringa  12
13
Il metodo charAt
Descrizione: restituisce il carattere in una
specificata posizione (valore intero)
Tipo restituito: char
Sintassi: <string_id>.charAt(<position>);
Esempio:
String str=“Hello world!”;
char carattere;
carattere=str.charAt(2);
System.out.println(carattere);
Questo frammento di codice
stampa il carattere nella
posizione di indice 2 (cioè
il terzo carattere)
 ‘l’
14
Il metodo equals
Descrizione: confronta la stringa che invoca il
metodo con una stringa passata come
argomento e restituisce true se le due
stringhe sono uguali, altrimenti false
Tipo restituito: boolean
Sintassi: <string_id>.equals(<cfr_string_id>);
Esempio:
String str1=“Hello world!”, str2=“Hello!”;
boolean test;
Questo frammento di codice
test=str1.equals(str2);
confronta due stringhe e
System.out.println(test);
restituisce false
15
Il metodo equalsIgnoreCase
Descrizione: confronta la stringa che invoca il
metodo con una stringa passata come argomento e
restituisce true se le due stringhe sono uguali,
altrimenti false (ignorando minuscole e
maiuscole)
Tipo restituito: boolean
Sintassi: <string_id>.equalsIgnoreCase(<cfr_string_id>);
Esempio:
String str1=“Hello!”, str2=“hello!”;
boolean test;
Questo frammento di codice
due stringhe (ignorando
test=str1.equalsIgnoreCase(str2); confronta
maiuscole e minuscole) e
restituisce true
16
System.out.println(test);
Il metodo toLowerCase
Descrizione: restituisce la stringa che invoca il
metodo trasformata in minuscolo
Tipo restituito: String
Sintassi: <string_id>.toLowerCase();
Esempio:
String str1=“HELLO!”, str2;
str2=str1.toLowerCase();
System.out.println(str2);
Questo frammento di codice
stampa la stringa “hello!”
17
Il metodo toUpperCase
Descrizione: restituisce la stringa che invoca il
metodo trasformata in maiuscolo
Tipo restituito: String
Sintassi: <string_id>.toUpperCase();
Esempio:
String str1=“hello!”, str2;
str2=str1.toUpperCase();
System.out.println(str2);
Questo frammento di codice
stampa la stringa “HELLO!”
18
Scarica

StringheJava