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

Post on 01-May-2015

222 views 2 download

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

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

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

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!!

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

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)

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”

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>

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

11

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

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

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

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

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

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

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

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

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

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

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

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

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

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