1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java:...

25
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array

Transcript of 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java:...

Page 1: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

1

Corso di Informatica

(Programmazione)

Lezione 13 (21 novembre 2008)

Programmazione in Java:stringhe e array

Page 2: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

2

Le stringheUna 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!”;

Page 3: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

3

Dichiarazione di una stringa… una dichiarazione con inizializzazione della stringa è:

String <stringID>=<stringValue>;

Esempio di dichiarazione di una stringa di 6 caratteri:

String isString=“Hello!”;

In questo caso la dichiarazione costruisce automaticamenteuna stringa di 6 caratteri inizializzata con il valore “Hello!”

Identificatore (nome) della stringa

Page 4: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

4

String vs charAttenzione! 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 carattereString stringa, carStringa;stringa=“programmazione”; //StringacarStringa=“d”; //Stringa di un solo caratterecarattere=“d”;//Assegnamento errato!!carString=‘d’;//Assegnamento errato!!

Page 5: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

5

Organizzazione di StringSi riprenda il codice:

String frase;

frase=“Hello world!”;

Ogni carattere ha una posizione precisa

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)...

Page 6: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

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 dell’ultimo carattere ‘!’ incrementata di 1)

Page 7: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

7

Concatenazione di stringheLa 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 di “Questa è una concatenazione di tre stringhe”

Page 8: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

8

Manipolazione di stringheDal 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 <stringID>, si invoca il suo generico metodo <method>(<paramList>) tramite il separatore punto (.):

<stringID>.<method>(<paramList>);

dove <paramList> è la lista dei parametri formali in ingresso al metodo <method>

Page 9: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

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)

Page 10: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

10

Manipolazione di stringheI 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

Page 11: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

11

Manipolazione di stringhe… per vedere tutti gli altri metodi di String, si deve vedere la documentazione relativa!

Page 12: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

12

Il metodo lengthDescrizione: restituisce il numero di caratteri di una stringa

Tipo restituito: int

Sintassi:

<stringID>.length();

String str=“Hello world!”;int lunghezza;lunghezza=str.length();System.out.println(“Lunghezza=“+lunghezza);

Page 13: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

13

Il metodo charAtDescrizione: restituisce il carattere in una posizione specificata

Tipo restituito: char

Sintassi:

<stringID>.charAt(int <position>);

String str=“Hello world!”;char carattere;carattere=str.charAt(2);System.out.println(“Terzo carattere=“+carattere);

Page 14: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

14

Il metodo equalsDescrizione: confronta la stringa con una stringa passata come parametro

Tipo restituito: boolean

Sintassi:

<stringID>.equals(String <stringID2>);

String str=“Hello world!”, str2=“Hello!”;boolean test;test=str.equals(str2);System.out.println(“Test=“+test);

Page 15: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

15

Il metodo equalsIgnoreCaseDescrizione: confronta la stringa con una stringa passata come parametro ignorando maiuscole e minuscole

Tipo restituito: boolean

Sintassi:

<stringID>.equalsIgnoreCase(String <stringID2>);

String str=“Hello!”, str2=“hello!”;boolean test;test=str.equalsIgnoreCase(str2);System.out.println(“Test=“+test);

Page 16: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

16

Il metodo toLowerCaseDescrizione: restituisce la stringa in minuscolo

Tipo restituito: String

Sintassi:

<stringID>.toLowerCase();

String str=“Hello!”, str2;str2=str.toLowerCase();System.out.println(“String=“+str2);

Page 17: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

17

Il metodo toUpperCaseDescrizione: restituisce la stringa in maiuscolo

Tipo restituito: String

Sintassi:

<stringID>.toUpperCase();

String str=“Hello!”, str2;str2=str.toUpperCase();System.out.println(“String=“+str2);

Page 18: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

18

Gli arrayIn 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 tipoPrima 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

Page 19: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

19

Dichiarazione di arrayLa dichiarazione di un array ha la seguente forma:

<tipo>[] <arrayID>=new <tipo>[<N>];

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) dell’array

Page 20: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

20

Dichiarazione di array… un’altra possibile forma di dichiarazione di un array è:

<tipo>[] <arrayID>={<list_of_values>};

Esempio di dichiarazione di un array di 3 int:

int[] isArray={3,5,9};

In questo caso la dichiarazione costruisce automaticamenteun array di 3 interi i cui valori sono inizializzati a 3, 5 e 9

Page 21: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

21

Accesso ai valori di un arrayE’ possibile accedere al singolo valore contenuto in un array (di dimensione N) tramite un indice che ne identifica la posizione. Tale indice è racchiuso tra []:

<arrayID>[<posIndex>]

fornisce il contenuto dell’elemento alla posizione <posIndex> dell’array identificato da <arrayID>. Il primo valore ha posizione 0, il secondo ha posizione 2, …, l’ultimo ha posizione (N-1).

Page 22: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

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]);

Page 23: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

23

Manipolazione di arrayPer ottenere la dimensione N di un array si deve scrivere:

<lengthVar>=<arrayID>.length;

dove <arrayID> è l’identificatore dell’array e <lengthVar> è una variabile dichiarata intera.

Ad esempio:

int[] iArray={2,4,6};int lunghezza;lunghezza=iArray.length;System.out.println(“Lunghezza=“+lunghezza);

Page 24: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

24

Manipolazione di array

Per copiare un array in un altro si deve usare il metodo System.arrayCopy:System.arrayCopy(<source>, <dest>, <start>, <number>);

dove <source> è l’array da copiare, <dest> è l’array in cui copiare (dello stesso tipo di <source>), <start> è la posizione dell’elemento di <source> da cui iniziare a copiare e <number> è il numero di elementi da copiare a partire da quello in posizione <start> ...

Page 25: 1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.

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