JAVA Franco Bombi 8 ottobre 2002
FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java è un linguaggio fortemente tipizzato in modo che sia possibile individuare molti errori al momento della compilazione Java è un linguaggio di alto livello che nasconde i dettagli della macchina che esegue un programma La gestione dinamica della memoria è affidata ad un garbage collector di elevata efficienza
FB La macchina virtuale Java Un programma scritto in linguaggio Java viene di solito tradotto, allatto della compilazione, in un insieme di istruzioni definite dalla macchina virtuale Java (JVM) Il codice binario della JVM, detto bytecode, viene poi eseguito per mezzo di un interprete che ha anche la funzione di caricare in memoria le classi delle librerie standard utilizzate dal programma Noi studieremo solo la realizzazione di applicazioni cioè di un programma da avviare con un comando del tipo: java nomeClasse parametri
FB Unità compilabili e pacchetti Un programma Java è composto ad un insieme di pacchetti (package) organizzati gerarchicamente Ogni pacchetto è a sua volta costituito da una o più unità compilabili cioè file individuati da un nome con lestensione.java Più unità compilabili contenute in una cartella costituiscono, in assenza di una dichiarazione esplicita, un pacchetto senza nome Ununità di compilazione può importare in modo esplicito classi da altri pacchetti, il pacchetto java.lang viene sempre importato implicitamente
FB Grammatiche Java è un linguaggio formale definito da un grammatica non contestuale La grammatica può essere divisa in due parti che descrivono rispettivamente le regole lessicali e la sintassi che governano la costruzione di unità compilabili sintatticamente corrette Dal punto di vista lessicale un programma Java è composto da righe (stringhe di caratteri terminate da un fineriga) a loro volta composte da unità elementari dette token (in italiano lessemi) I token devono essere separati da spazi e/o da commenti quando non ci sia un separatore o un operatore che marchi la fine del token
FB I codici Unicode e ASCII I programmi Java sono scritti usando linsieme di caratteri Unicode Unicode utilizza, per rappresentare un carattere, un numero intero senza segno di 16 bit e definisce oltre caratteri in molti alfabeti diversi I primi 128 codici Unicode coincidono con linsieme di caratteri noto come ASCII (American Standard Code for Information Interchange) Parole chiave, caratteri di interpunzione e operatori sono definiti con i soli caratteri ASCII Noi utilizzeremo solo i caratteri ASCII anche per definire nomi e quindi possiamo dimenticarci di Unicode
FB Il codice ASCII I primi 32 caratteri del codice ASCII (con codice da 0 a 31) sono caratteri di controllo, di nostro interesse sono solo i caratteri – 9tabulatore \t – 10nuova riga \n – 13invio \r I caratteri da 32 a 127 sono caratteri stampabili – 32spazio – da 48 a 57 caratteri numerici, le cifre decimali 0, 1 … – da 65 a 90, da 97 a 122 caratteri alfabetici (maiuscoli e minuscoli) – da 33 a 47, da 58 a 64, da 91 a 96, da 123 a 127 caratteri di interpunzione
FB Token I token (le unità lessicali con cui si costruisce una unità compilabile) possono essere un: – Identificatore (identifier): una stringa di caratteri alfanumerici con il primo carattere alfabetico – Parola chiave (keyword): stringhe di caratteri il cui uso è riservato e predefinito dal linguaggio Java – Costante (literal): un valore costante – Separatore: caratteri di interpunzione – Operatore: simboli che indicano unoperazione fra variabili e/o costanti
FB Le parole chiave abstract boolean break byte case catch char class const continue default do double else extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws transient try void volatale while Alcune parole chiave non sono mai usate, di altre noi non faremo mai uso, è comunque necessario saperne lesistenza per non cercare di utilizzare una parola chiave come identificatore
FB Separatori e operatori I seguenti 9 caratteri sono utilizzati come separatori (caratteri di interpunzione) ( ) { } [ ] ;,. I seguenti 37 caratteri o token sono utilizzati nelle espressioni come operatori = > < ! ~ ? : == = != && || * / & | ^ % > >>> += -= *= /= &= |= ^= %= >= >>>=
FB Tipi di dati, valori e variabili Java è un linguaggio fortemente tipizzato e quindi ogni variabile e ogni espressione è di un ben preciso tipo noto al momento della compilazione del programma I tipi di dati possono essere: – Tipi primitivi – Riferimenti ad un oggetto I nomi dei tipi sono usati – Nelle dichiarazioni – Nelle espressioni per la creazione di un esemplare di un classe (detta anche istanza della classe) – Nelle espressioni per la creazione di un array
FB Dati numerici – interi byte 1 byte-128 a 127 short 2 byte a int 4 byte-2*10 9 a 2*10 9 circa long 8 byte a circa char 2 byte0 a – virgola mobile (frazioni) float 4 byte5 cifre decimali double 8 byte15 cifre decimali Bouleani – booleantrue o false Tipi di dati primitivi - valori con segno
FB Tipi di dati primitivi Degli 8 tipi di dati primitivi a noi interessano per il momento solo 4 tipi – int a – double 15 cifre significative ( , ) – char 0 a 65535, caratteri Unicode (ASCII) – boolean true o false
FB Operatori fra interi Confronto (il risultato è un boolean ) >= == != Operatori unari (il risultato è un int ) (prefissi e postifissi) ~ Operatori binari (il risultato è un int ) + - * / % > >>> & | ^ Ternari ? : Conversione ( cast )
FB Operatori fra dati in virgola mobile Confronto (il risultato è un boolean ) >= == != Operatori unari (il risultato è un double ) (prefissi e postifissi) Operatori binari (il risultato è un double ) + - * / % Ternari ? : Conversione ( cast )