1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array
2 Le stringhe Una stringa è una sequenza di caratteri; in Java esiste un tipo di dati NON primitivo che consente di memorizzare e di manipolare le stringhe, il tipo String. In Java si può dichiarare una variabile di tipo String e assegnarle quindi una stringa di caratteri. Ad esempio il seguente codice dichiara una variabile String che si chiama frase e le assegna il valore dato dalla stringa di caratteri Hello world!: String frase; frase=Hello world!;
3 Dichiarazione di una stringa … una dichiarazione con inizializzazione della stringa è: String = ; Esempio di dichiarazione di una stringa di 6 caratteri: String isString=Hello!; In questo caso la dichiarazione costruisce automaticamente una stringa di 6 caratteri inizializzata con il valore Hello! Identificatore (nome) della stringa
4 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!!
5 Organizzazione di String Si riprenda il codice: String frase; frase=Hello world!; Ogni carattere ha una posizione precisa Helloworld! 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)...
6 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 (=11+1, ovvero posizione dellultimo carattere ! incrementata di 1)
7 Concatenazione di stringhe La concatenazione di stringhe avviene tramite loperatore +. 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 di Questa è una concatenazione di tre stringhe
8 Manipolazione di stringhe Dal momento che il tipo String è NON PRIMITIVO e ha una struttura interna complessa, esso mette a disposizione alcuni metodi (o procedure) per manipolare le stringhe. Data una variabile String identificata da, si invoca il suo generico metodo ( ) tramite il separatore punto (.):. ( ); dove è la lista dei parametri formali in ingresso al metodo
9 Manipolazione di stringhe … ad esempio il seguente codice dichiara una variabile String e ne ottiene la lunghezza: String str; str=Hello world!; int lunghezza; lunghezza=str.length(); System.out.println(Lunghezza=+lunghezza); Il metodo length() di una variabile di tipo String restituisce il valore della lunghezza della stringa di caratteri contenuta nella variabile che invoca il metodo (in questo caso la variabile identificata da str)
10 Manipolazione di stringhe I metodi che vediamo nel seguito servono: per calcolare la lunghezza di una stringa per ottenere il carattere in una data posizione per confrontare due stringhe per convertire una stringa in caratteri minuscoli per convertire una stringa in caratteri maiuscoli
11 Manipolazione di stringhe … per vedere tutti gli altri metodi di String, si deve vedere la documentazione relativa!
12 Il metodo length Descrizione: restituisce il numero di caratteri di una stringa Tipo restituito: int Sintassi:.length(); String str=Hello world!; int lunghezza; lunghezza=str.length(); System.out.println(Lunghezza=+lunghezza);
13 Il metodo charAt Descrizione: restituisce il carattere in una posizione specificata Tipo restituito: char Sintassi:.charAt(int ); String str=Hello world!; char carattere; carattere=str.charAt(2); System.out.println(Terzo carattere=+carattere);
14 Il metodo equals Descrizione: confronta la stringa con una stringa passata come parametro Tipo restituito: boolean Sintassi:.equals(String ); String str=Hello world!, str2=Hello!; boolean test; test=str.equals(str2); System.out.println(Test=+test);
15 Il metodo equalsIgnoreCase Descrizione: confronta la stringa con una stringa passata come parametro ignorando maiuscole e minuscole Tipo restituito: boolean Sintassi:.equalsIgnoreCase(String ); String str=Hello!, str2=hello!; boolean test; test=str.equalsIgnoreCase(str2); System.out.println(Test=+test);
16 Il metodo toLowerCase Descrizione: restituisce la stringa in minuscolo Tipo restituito: String Sintassi:.toLowerCase(); String str=Hello!, str2; str2=str.toLowerCase(); System.out.println(String=+str2);
17 Il metodo toUpperCase Descrizione: restituisce la stringa in maiuscolo Tipo restituito: String Sintassi:.toUpperCase(); String str=Hello!, str2; str2=str.toUpperCase(); System.out.println(String=+str2);
18 Gli array In Java un array è un insieme di N successive locazioni di memoria sul calcolatore: che possiedono un unico identificatore in cui vengono memorizzati N valori dello stesso tipo Prima di poter usare un array occorre effettuarne la dichiarazione: assegnandogli un identificatore (nome) attraverso cui accedere ai singoli valori specificandone il tipo e il numero (N) di valori che dovrà contenere
19 Dichiarazione di array La dichiarazione di un array ha la seguente forma: [] =new [ ]; Esempio di dichiarazione di un array di 3 int: int[] isArray=new int[3]; Numero dei valori di tipo int che la variabile isArray deve contenere. I valori sono per il momento indefiniti Identificatore (nome) dellarray
20 Dichiarazione di array … unaltra possibile forma di dichiarazione di un array è: [] ={ }; Esempio di dichiarazione di un array di 3 int: int[] isArray={3,5,9}; In questo caso la dichiarazione costruisce automaticamente un array di 3 interi i cui valori sono inizializzati a 3, 5 e 9
21 Accesso ai valori di un array E possibile accedere al singolo valore contenuto in un array (di dimensione N) tramite un indice che ne identifica la posizione. Tale indice è racchiuso tra []: [ ] fornisce il contenuto dellelemento alla posizione dellarray identificato da. Il primo valore ha posizione 0, il secondo ha posizione 2, …, lultimo ha posizione (N-1).
22 Accesso ai valori di un array … Ad esempio: char[] cArray={a,b,c};//Array di 3 char System.out.println(cArray[1]); //Stampa b int[] iArray=new int[4]; //Array di 4 int iArray[0]=10; iArray[1]=20; iArray[2]=30; iArray[3]=40; String[] sArray={uno,due};//Array di 2 String System.out.println(Prima stringa=+sArray[0]);
23 Manipolazione di array Per ottenere la dimensione N di un array si deve scrivere: =.length; dove è lidentificatore dellarray e è una variabile dichiarata intera. Ad esempio: int[] iArray={2,4,6}; int lunghezza; lunghezza=iArray.length; System.out.println(Lunghezza=+lunghezza);
24 Manipolazione di array Per copiare un array in un altro si deve usare il metodo System.arrayCopy: System.arrayCopy(,,, ); dove è larray da copiare, è larray in cui copiare (dello stesso tipo di ), è la posizione dellelemento di da cui iniziare a copiare e è il numero di elementi da copiare a partire da quello in posizione...
25 Manipolazione di array … Ad esempio: int[] iArray1={1,2,3}; int[] iArray2=new int[3]; System.arrayCopy(iArray1,iArray2,0,3); //Copia tutti gli elementi di iArray1 //in iArray2