Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice...

60
Identificatori, tipi di dati ed array

Transcript of Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice...

Page 1: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Identificatori, tipi di dati ed array

Page 2: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Obiettivi1. Saper utilizzare le convenzioni per il codice Java2. Conoscere e saper utilizzare tutti i tipi di dati primitivi3. Saper gestire casting e promotion4. Saper utilizzare i reference, e capirne la filosofia5. Iniziare ad esplorare la documentazione della libreria standard

di Java6. Saper utilizzare la classe String7. Saper utilizzare gli array8. Saper commentare il proprio codice ed essere in grado di

utilizzare lo strumento javadoc per produrre documentazione tecnica esterna

Page 3: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Stile di codifica ( Ob. 1 )

1. E’ a schema libero.2. E’ case sensitive.3. Supporta (ovviamente) i commenti.4. Ha parole chiave.5. Ha regole ferree per i tipi di dati, ed alcune

semplici convenzioni per i nomi.

Page 4: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Schema libero ma…

Il programma potrebbe essere interamente scritto su di una riga ma conviene usare alcune regole di indentazione:

public class Classe

{

public int intero;

public void metodo()

{

intero = 10;

int unAltroIntero = 11;

}

}

Page 5: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.
Page 6: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

CommentiCommentare opportunamente il codice è una pratica che dovrebbe essere considerataobbligatoria dal programmatore. Così, infatti, le correzioni da apportare ad un

programma risulteranno nettamente semplificate.Java supporta tre tipi diversi di commenti al codice:1. Commenti su un’unica riga (per commentare brevemente alcune parti del codice):

// Questo è un commento su una sola riga

2. Commento su più righe (utile per la descrizione della funzionalità di un programma:/*

Questo è un commento su più righe

*/• 3. Commento “Javadoc” (offre la possibilità di produrre in modo standard, in

formato HTML, la documentazione tecnica del programma, sfruttando un comando chiamato "javadoc“) :/**

Questo commento permette di produrre la documentazione del codice in formato HTML,

nello standard Javadoc

*/

Page 7: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Identificatori (nomi)

Un identificatore non può coincidere con una parola chiave, o con una parola riservata.

Il primo carattere può essere A-Z, a-z, _, $

Il secondo ed i successivi possono essere A-Z, a-z, _, $,0-9

Quindi: "a2" è un identificatore valido, mentre "2a" non lo è.

Page 8: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Parole chiave

Page 9: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Alcune convenzioni1. Identificatori significativi2. Id. classe deve sempre iniziare per lettera maiuscola. Se

composto da più parole, bisogna invece unire le parole in modo tale da formare un unico identificatore, e fare iniziare ognuna di esse con lettera maiuscola. Persona o MacchinaDaCorsa o FiguraGeometrica

3. Id. variabile deve iniziare per lettera minuscola ed è composto da uno i più sostantivi

numeroLati o larghezza o numeroPartecipantiAlSimposio

4. Id. metodi deve iniziare per lettera minuscola è composto da un verbo stampaNumeroPartecipantiAlSimposio(), o somma()

5. Id. costanti: tutte le lettere dovranno essere maiuscole. Se l’id. è composto di più parole, queste si separano con un “_” NUMERO_LATI_DI_UN_QUADRATO O PI_GRECO

Page 10: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Tipi di dati primitivi

Java definisce solamente otto tipi di dati primitivi:

• Tipi interi: byte, short, int, long.• Tipi floating point (o a virgola mobile): float e

double.• Tipo testuale: char.• Tipo logico-booleano: boolean.

Page 11: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Tipi interi

byte, short, int, long condividono la stessa funzionalità

immagazzinare numeri interi pos. o neg. differiscono per quanto riguarda il proprio

intervallo di rappresentazione.

Page 12: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Per immagazzinare un intero si possono utilizzare tre forme:1. decimale:2. ottale:

anteporre al numero intero uno 0 (zero)3. esadecimale:

anteporre al numero intero uno 0x (zero ics)

byte b = 10; //notazione decimaleshort s = 022; //notazione ottaleint i = 1000000000; //notazione decimalelong l = 0x12acd; //notazione esadecimale

Page 13: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Promotionbyte b = 127; correttobyte b = 128; errore in compilazione (il max per byte è 127)byte b = b*2; errore in compilazione: 2 è considerato un int: prima di fare l’operazione b viene

promosso a int: il risultato è un int che “non ci sta” in un byte.Regole seguite dalla promotion:• se uno degli operandi è double, l’altro operando sarà

convertito in double;• se il più “ampio” degli operandi è un float, l’altro operando

sarà convertito in float;• se il più “ampio” degli operandi è un long, l’altro operando

sarà converito in long;• in ogni altro caso entrambi gli operandi saranno convertiti in

int.

Page 14: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Cast(ing)

Tecnica per forzare una certa quantità ad essere immagazzinata in un certo tipo di dato:

b = (byte)(b * 2);

ATTENZIONE:b = (byte)128; non dà errore. Siccome il cast agisce troncando i bit in

eccedenza (nel nostro caso, dato che un int utilizza 32 bit, mentre un byte solo 8, saranno troncati i primi 24 bit dell’int), la variabile b avrà il valore di –128 e non di 128!

Se la somma di due interi supera il range consentito, è comunque possibile immagazzinarne il risultato in un intero senza avere errori in compilazione, ma il risultato sarà diverso da quello previsto:int a = 2147483647; // Massimo valore per un int

int b = 1;

int risultato = a+b;

ma il valore della variabile risultato sarà di -2147483648!

Page 15: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Anche la divisione tra due interi rappresenta un punto critico! Infatti il risultato finale,per quanto detto sinora, non potrà che essere immagazzinato in un intero, ignorando cosìeventuali cifre decimali.

Variabile longA meno di cast espliciti, essa sarà sempre inizializzata con un intero:long l = 2000; 2000 è un int per default, ma il compilatore non ci

segnalerà errori perché un int può essere tranquillamente immagazzinato in un long.

Per la precisione dovremmo scrivere:long l = 2000L;Saremmo obbligati ad un casting a long nel caso in cui volessimo assegnare alla variabile l un valore fuori dell’intervallo di rappresentazione di un int:long l = 3000000000;produrrebbe un errore in compilazione. Bisogna eseguire il casting nel seguente modo:long l = 3000000000L;

Page 16: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

float e double

Per quanto riguarda cast e promotion, la situazione cambia rispetto al caso dei tipi interi: il default è double e non float.float f = 3.14 dà errore in compilazioneCorrettamente bisogna scrivere:float f = 3.14F o float f = 3.14f

Forma esponenziale:double d = 10.12E24;

Page 17: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Alcune operazioni matematiche potrebbero dare risultati che non sono compresi nell’insieme dei numeri reali.Le classi wrapper Double e Float, forniscono le seguenti costanti statiche:Float.NaNFloat.NEGATIVE_INFINITYFloat.POSITIVE_INFINITYDouble.NaNDouble.NEGATIVE_INFINITYDouble.POSITIVE_INFINITY

Dove NaN sta per “Not a Number” (“non un numero”). Per esempio:double d = -10.0 / 0.0;System.out.println(d);

produrrà il seguente output:NEGATIVE_INFINITY

Page 18: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Modificatore final

Il modificatore final applicato ad una variabile farà in modo che ogni tentativo di cambiare il valore di tale variabile (già inizializzata) produrrà un errore in compilazione.

Quindi una variabile final è una costante.

Page 19: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Modificatore static

Quando dichiariamo una variabile statica, allora tale variabile sarà condivisa da tutte le istanze di quella classe.

public class MiaClasse {

public static int variabileStatica = 0; }

MiaClasse ogg1 = new MiaClasse();

MiaClasse ogg2 = new MiaClasse();

System.out.println(ogg1.variabileStatica + "-" +

ogg2.variabileStatica);

ogg1.variabileStatica = 1;

System.out.println(ogg1.variabileStatica + "-" +

ogg2.variabileStatica);

ogg2.variabileStatica = 2;

System.out.println(ogg1.variabileStatica + "-" +

ogg2.variabileStatica);

Page 20: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Produrrà il seguente risultato:0-0

1-1

2-2

Page 21: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Tipo di dato logico - booleano

Il tipo di dato boolean utilizza solo un bit per memorizzare un valore e gli unici valori che può immagazzinare sono true e falseboolean b = true;

Vengono definiti Literals i valori (contenenti lettere o simboli) che vengono specificati nel codice sorgente invece che al runtime. Possono rappresentare variabili primitive o stringhe e possono apparire solo sul lato destro di un’assegnazione o come argomenti quando si invocano metodi.

boolean isBig = true; char c = 'w';

String a = "\n"; int i = 0x1c;

float f = 3.14f; double d = 3.14;

Page 22: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Tipo di dato primitivo letterale

Il tipo char permette di immagazzinare caratteri (uno per volta). Utilizza l’insieme Unicode per la decodifica. Unicode è uno standard a 16 bit

http://www.unicode.orgPossiamo assegnare ad un char un qualsiasi carattere che si

trova sulla nostra tastiera , oppure possiamo assegnare ad un char direttamente un valore Unicode in esadecimale, che identifica univocamente un determinato carattere, anteponendo ad essa il prefisso \u. In qualsiasi caso, dobbiamo comprendere tra apici singoli, il valore da assegnare

Page 23: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Esempichar primoCarattere = 'a';

char car ='@';

char letteraGrecaPhi ='\u03A6'; (lettera "Φ")

char carattereUnicodeNonIdentificato ='\uABC8';

Esiste anche la possibilità di immagazzinare caratteri di escape come:

• \n che equivale ad andare a capo (tasto return)• \\ che equivale ad un solo \ (tasto backslash)• \t che equivale ad una tabulazione (tasto TAB)• \' che equivale ad un apice singolo• \" che equivale ad un doppio apice (virgolette)

Page 24: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

“Sommare” caratteri

E’ possibile utilizzare caratteri in espressioni aritmetiche.

Per esempio, possiamo sommare un char con un int. Infatti, ad ogni carattere, corrisponde un numero intero. Per esempio:

int i = 1;

char a = 'A';

char b = (char)(a+i); // b ha valore 'B'!

Page 25: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Tipi di dati non primitivi: reference

Dichiarare un oggetto di una classeNomeClasse nomeOggetto;

È del tutto simile a dichiarare un tipo di dato primitivo. Il "nome" che diamo ad un oggetto è detto "reference". Infatti non si sta parlando di una variabile tradizionale, bensì di una variabile che alcuni definiscono “puntatore”.

Possiamo definire un puntatore come una variabile che contiene un indirizzo in memoria.

Page 26: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Esempiopublic class Data {

public int giorno;

public int mese;

public int anno;

}

double unNumero = 5.0;

Data unGiorno = new Data();

Page 27: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

double unNumero = 5.0;

double unAltroNumero = unNumero;

Data unGiorno = new Data();

Data unAltroGiorno = unGiorno;

unGiorno.anno

è sicuramente equivalente a:unAltroGiorno.anno

Page 28: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Passaggio di parametri per valore

Quando si invoca un metodo che come parametro prende in input una variabile, al metodo stesso viene passato solo il valore (una copia) della variabile, che quindi rimane immutata anche dopo l'esecuzione del metodo.

Page 29: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

public class CiProvo{

public void cambiaValore(int valore){

valore = 1000;}

}

il seguente frammento di codice:

CiProvo ogg = new CiProvo();int numero = 10;ogg.cambiaValore(numero);System.out.println(“il valore del numero è ” + numero);

produrrà il seguente output:

il valore del numero è 10

Page 30: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Infatti il parametro valore del metodo cambiaValore(), nel momento in cui è stato eseguito il metodo, non coincideva con la variabile numero, bensì immagazzinava solo la copia del suo valore (10).

Quindi ovviamente la variabile numero non è statamodificata.

Stesso discorso vale per i tipi reference: viene sempre passato il valore del reference, ovvero l'indirizzo in memoria.

Page 31: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

public class CiProvoConIReference{

public void cambiaReference(Data data){

data = new Data();// Un oggetto appena istanziato// ha le variabili con valori nulli

}}il seguente frammento di codice:CiProvoConIReference ogg =

new CiProvoConIReference();Data dataDiNascita = new Data();dataDiNascita.giorno = 26;dataDiNascita.mese = 1;dataDiNascita.anno = 1974;ogg.cambiaReference(dataDiNascita);System.out.println("Data di nascita = "+ dataDiNascita.giorno + "-"+ dataDiNascita.mese+ "-" +dataDiNascita.anno );

Page 32: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

produrrà il seguente output:

Data di nascita = 26-1-1974

Valgono quindi le stesse regole anche per i reference.

Se il metodo cambiaReference() avesse cambiato i valori delle variabili d'istanza dell'oggetto avremmo avuto un output differente:

Data di nascita = 0-0-0

Consideriamo un altro esempio:

Page 33: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

public class CiProvoConIReference{

public void cambiaReference(Data data){data.giorno=29; // data punta allo stesso indirizzodata.mese=7; // della variabile dataDiNascita }

}il seguente frammento di codice:CiProvoConIReference ogg =

new CiProvoConIReference();Data dataDiNascita = new Data();dataDiNascita.giorno = 26;dataDiNascita.mese = 1;dataDiNascita.anno = 1974;ogg.cambiaReference(dataDiNascita);System.out.println("Data di nascita = "+ dataDiNascita.giorno + "-"+ dataDiNascita.mese+ "-" +dataDiNascita.anno );

Page 34: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

produrrà il seguente output:

Data di nascita = 29-7-1974

Il fatto che il passaggio avvenga sempre per valore garantisce che un oggetto possa essere modificato e, contemporaneamente, si è certi che dopo la chiamata del metodo il reference punti sempre allo stesso oggetto.

Page 35: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Inizializzazione delle variabili d’istanza

Nelmomento in cui è istanziato un oggetto, tutte le sue variabili d’istanza (che con esso condividono il ciclo di vita) vengono inizializzate ai rispettivi valori nulli.

Page 36: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Introduzione alla libreria standard

Java possiede un’enorme e lussuosa libreria di classi standard, che costituisce uno dei punti di forza del linguaggio. Essa è organizzata in vari package (letteralmente pacchetti, fisicamente cartelle) che raccolgono le classi secondo un’organizzazione basata sul campo d’utilizzo.

Page 37: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

java.io contiene classi per realizzare l’input -output in Java

java.awt contiene classi per realizzare interfacce grafiche, come Button

java.net contiene classi per realizzare connessioni, come Socket

java.applet contiene un’unica classe: Applet. Questa permette di realizzare applet

java.util raccoglie classi d’utilità, come Date

java.lang è il package che contiene le classi nucleo del linguaggio, come System e String.

Page 38: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Il comando import

Per utilizzare una classe della libreria all’interno di una classe che abbiamo intenzione di scrivere, bisogna prima importarla. Supponiamo di voler utilizzare la classe Date del package java.util . Prima di dichiarare la classe in cui abbiamo intenzione di utilizzare Date dobbiamo scrivere:

import java.util.Date; oimport java.util.*;

Page 39: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

…default

Di default in ogni file Java è importato automaticamente tutto il package java.lang, senza il quale non potremmo utilizzare classi fondamentali quali System e String.

Quindi, nel momento in cui compiliamo una classe Java, il compilatore anteporrà il comando:

import java.lang.*;

alla dichiarazione della nostra classe.

Page 40: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Attenzione a “*”

L’asterisco non implica l’importazione delle classi appartenenti ai “sottopackage” :per esempio import java.awt.* non importa le classi di java.awt.event.*.

Quindi l’istruzione import java.*

non importa tutti i package fondamentali.

Page 41: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Esempioimport java.awt.*;

public class FinestraConBottone {

public static void main(String args[])

{

Frame finestra = new Frame("Titolo");

Button bottone = new Button("Cliccami");

finestra.add(bottone);

finestra.setSize(200,100);

finestra.setVisible(true);

}

}

Page 42: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

…attenzione

• La pressione del bottone o il tentativo di chiudere la finestra non provocherà nessuna azione. Solo il ridimensionamento della finestra è permesso perché rientra nelle caratteristiche della classe Frame.

• Per chiudere l’applicazione: spostarsi sul prompt Dos, premere CTRL-C

• In Jcreator premere il pulsante “Stop the active tool” ( il"fulmine" a fianco del pulsante built project)

Page 43: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

La classe String

In Java le stringhe (sequenze di caratteri) sono oggetti:Dovrebbero essere istanziate con la solita sintassi String nome = new String("Mario Rossi");

Ma è permesso più semplicemente scrivere:String nome = "Mario Rossi";

Come se fosse un tipo di dato primitivo

N.B. Per le stringhe si usano le virgolette "" Mentre per i caratteri si usano i singoli ''

Page 44: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Alcuni metodi di StringString a = " claudio ";

String b = a.toUpperCase();

String c = b.toLowerCase();

String d = a.trim();System.out.println(a); // a rimane immutatoSystem.out.println(b); // b è la stringa maiuscolaSystem.out.println(c); // c è la stringa

minuscola (a)

System.out.println(d); // d è la stringa a senza spazi né davanti né dietro

Page 45: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

produrrebbero il seguente output: claudio CLAUDIO claudio claudio

Page 46: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

La documentazione della libreria standard di Java

Per consultare la documentazione aprire il file "index.html“ che si trova nella cartella “API” della cartella “Docs” del JDK

C:\Programmi\Java\jdk1.6.0_07\docs\api\ index.html

È assolutamente fondamentale che iniziare la sua esplorazione e la conoscenza della documentazione.

Page 47: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Lo strumento javadoc

Lo strumento “javadoc” permette di generare ipertesti come quello della libreria standard con le informazioni sulle classi che scriveremo

Dal prompt, digitare: javadoc nomeFile.javae saranno generati i file HTML che servonoPotremo generare documentazione solo per classi

dichiarate public: possiamo commentare classi, metodi, costruttori, variabili, costanti ed interfacce (se dichiarate public). Inoltre il commento deve precedere quello che si vuol commentare.

Page 48: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Intallare Javadoc in JCreator1) Avvia JCreator 2) Seleziona Configure…Options… dalla barra dei menu 3) Apparirà una finestra di dialogo Options 4) Seleziona Tools dal pannello di sinistra 5) Clicca il bottone New 6) Seleziona Program dalla lista 7) Apparirà la finestra di dialogo Open 8) Esplora i tuoi file e le cartelle per trovare il file

javadoc.exe C:\Programmi\Java\jdk1.6.0_07\bin\ javadoc.exe

Page 49: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

9) Fai doppio click sul file o clicca sul bottone Open 10) Clicca il bottone Apply situato in basso alla finestra di dialogo options. Questo aggiunge l’utility al menù tools nella parte sinistra del pannello 11) Seleziona javadoc dal menu Tools nella parte sinistra del pannello 12) Inserire le seguenti informazioni: Arguments: -d "$[FileDir]\doc" $[FileName] -author -version -private Initial directory:[FileDir] 13) Click OK. 14) Nel menu Tools dovrebbe ora apparire javadoc.

Page 50: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Eseguire Javadoc in JCreator

1. Aprire/Creare un nuovo progetto 2. Compilare il progetto 3. Selezionare Tools..javadoc 4. Una finestra di DOS apparirà appena la documentazione HTML

sarà creata. Se c’è un errore lo vedrai nella finestra DOS e la finestra rimarrà aperta. Se non ci sono errori, la finestra si chiuderà automaticamente.

5. La documentazione HTML sarà creata nella sottocartella doc della cartella che contiene la classe.

6. Nella cartella doc troverai un file nominato index.html. Apri questo file per vedere la documentazione generata.

Page 51: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Gli arrayCollezione di tipi di dati primitivi, o di reference,

o di altri array. Permettono di utilizzare un solo nome per

individuare una collezione costituita da vari elementi, che saranno accessibili tramite indici interi.

Per utilizzare un array bisogna passare attraverso tre fasi:

dichiarazione, creazione ed inizializzazione.

Page 52: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Dichiarazione di un arrayarray di char (tipo primitivo): char alfabeto[];

oppure char[] alfabeto;

array di istanze di Button (classe appartenente al package java.awt):

Button bottoni[];

oppure Button[] bottoni;

Page 53: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Creazione di un array

Un array è un oggetto speciale in Java e va istanziato in modo speciale

alfabeto = new char[21];

bottoni = new Button[3];

E’ obbligatorio specificare al momento dell’istanza dell’array la dimensione dell’array stesso.

A questo punto però tutti gli elementi dei due array sono inizializzati automaticamente ai relativi valori nulli.

Page 54: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Inizializzazione di un arrayPer inizializzare un array, bisogna inizializzarne ogni

elemento singolarmente:alfabeto [0] = 'a';

alfabeto [1] = 'b';

alfabeto [2] = 'c';

alfabeto [3] = 'd';

. . . . . . . . . .

alfabeto [20] = 'z';

bottoni [0] = new Button();

bottoni [1] = new Button();

bottoni [2] = new Button();

Page 55: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

L’indice di un array inizia sempre da zero: un array dichiarato di 21 posti, avrà come indice minimo 0 e massimo 20

AlternativaE’ possibile eseguire tutti e tre i passi principali per creare unarray tramite una particolare sintassi:

char alfabeto [] = {'a', 'b', 'c', 'd', 'e',…, 'z’};Button bottoni [] = { new Button(), new Button(), new Button()} ;

Page 56: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

…differenze

un array dichiarato di tipo di dato primitivo contiene direttamente i suoi elementi

un array dichiarato di tipo di dato complessocontiene solo reference, non gli elementi stessi.

Page 57: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Variabile length

Variabile che, applicata ad un array, restituisce la

dimensione effettiva dell’array stesso. Quindi:

alfabeto.lengthvarrà 21.

Page 58: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Arraymultidimensionaliint arrayNonRettangolare [][] = new int[4][];

arrayNonRettangolare [0] = new int[2];

arrayNonRettangolare [1] = new int[4];

arrayNonRettangolare [2] = new int[6];

arrayNonRettangolare [3] = new int[8];

arrayNonRettangolare [0][0] = 1;

arrayNonRettangolare [0][1] = 2;

arrayNonRettangolare [1][0] = 1;

. . . . . . . . . . . . . . . .

arrayNonRettangolare [3][7] = 10;

Page 59: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

oppure, equivalentemente:

int arrayNonRettangolare [][] = {{1,2},{1,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0,0,10}};

Page 60: Identificatori, tipi di dati ed array. Obiettivi 1. Saper utilizzare le convenzioni per il codice Java 2. Conoscere e saper utilizzare tutti i tipi di.

Limiti degli array

1. Non sono eterogenei. Per esempio un array di Button deve contenere solo reference ad oggetti Button.

2. Non sono ridimensionabili. Trattasi di oggetti e quindi il seguente codice:

int mioArray [] = {1, 2, 3, 4};

mioArray = new int[6];

non copia il contenuto del primo array nel secondo, ma semplicemente assegna al reference una nuova istanza di array.