Java base I: Sintassi e tipi di dati
Argomenti Elementi fondamentali della sintassi Java Tipi di dati di Java Gli operatori
Obiettivi Familiarizzare con la sintassi Java Conoscere i tipi di dati Conoscere gli operatori
Java è un linguaggio Imperativo orientato al comando ESPRESSIONE COMANDO METODO CLASSE PACKAGE a + 1 C LIKE Semplice a+1; Composto if(a>1) b=a+1; Per separare gli elementi è necessario utilizzare almeno uno spazio,una tabulazione o un a capo variabile 1 riga per ogni comando operatore costante
Utility per la documentazione del codice I commenti in Java Testo che non viene preso in considerazione dal compilatore 3 tipi // /* ... */ /** ... */ Commenta tutto il codice fino a fine riga Tutto il testo racchiuso tra questi delimitatori viene considerato commento Definisce un commento che viene elaborato da javadoc Utility per la documentazione del codice
Le variabili in Java Primitive Oggetti Una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato Java è un linguaggio fortemente tipizzato Primitive Ogni variabile deve essere di un certo tipo identificabile Oggetti Dichirazione di una variabile [tipo] [nome_variabile]; Assegnazione di una variabile [nome_variabile] = [valore]; [tipo] [nome_variabile] = [valore];
I dati primitivi Java mette a disposizione 8 tipi di dati primitivi utili alla definizione di oggetti più complessi Numeri interi Numeri in virgola mobile char (tipo carattere) boolean byte short int long float double Dimensione prefissata INDIPENDENTE DALLA PIATTAFORMA
Requisiti di memorizzazione Intervallo (inclusivo) Tipi numeri interi Tipo Requisiti di memorizzazione Valori di Default Intervallo (inclusivo) byte 1 byte (8 bit) Da –128 a +127 short 2 byte (16 bit) Da –32.768 a +32.767 int 4 byte (32 bit) Da –2.147.483.648 a +2.147.483.647 long 8 byte (64 bit) 0L da -9 miliardi di miliardi a 9 miliardi di miliardi La valutazione di un’espressione si ferma appena il risultato è noto.
Tipi numeri in virgola mobile Tipo Requisiti di memorizzazione Valori di Default Intervallo float 4 byte 0.0F 6-7 cifre decimali significative double 8 byte 0.0 15 cifre decimali significative La valutazione di un’espressione si ferma appena il risultato è noto.
Tipo char Le variabili char contengono un unico carattere Le costanti di tipo char sono racchiuse tra apici singoli (‘’) Il carattere rappresentato è un carattere dello schema di codifica Unicode. I caratteri Unicode comprendono tutti I caratteri ASCII,caratteri di alfabeti latini e non, caratteri particolari non inclusi nello schema ASCII Il carattere Unicode occupa 2 byte e consente quindi di rappresentare 65536 caratteri diversi Indicazione carattere Unicode: \uXXXX, con XXXX numero Hex Per indicare alcuni caratteri speciali si utilizzano delle sequenze di escape
Tipo char (2) Caratteri speciali Sequenza di escape Nome Valore Unicode \b Backspace \u0008 \t Tabulazione \u0009 \n Avanzamento di riga \u000a \r Ritorno carrello \u000d \” Virgolette doppie \u0022 \’ Virgolette singole \u0027 \\ Barra rovesciata \u005c La valutazione di un’espressione si ferma appena il risultato è noto.
Tipo boolean Puo’ avere soltanto 2 valori : true o false (sono entrambe parole riservate) Tutti gli operatori comparativi (come ad esempio a>b) restituiscono un valore boolean Valori boolean sono richiesti dalle istruzioni di controllo di flusso (if, while, do-while) RETURN È il meccanismo che consente alla funzione chiamata di restituire un valore alla funzione chiamante. Sintassi return <espressione>; Per motivi di chiarezza l’espressione viene spesso racchiusa fra parentesi tonde (che però sono opzionali). La funzione chiamante è libera di trascurare il valore restituito. In C/C++ non esiste il tipo boolean In Java non è possibile convertire un valore booleano in un valore numerico Inizializzato a false
Dichiarazione e Inizializzazione Spesso alla variabile deve esser assegnato un valore iniziale Tutte le variabili prima di essere utilizzate devono essere dichiarate TIPO NOME Altrimenti viene assegnato valore di Default Inizia con carattere minuscolo Evitare uso underscore Si possono usare numeri (non all’inizio) Se più parole, la prima lettera è sempre maiuscola Dichiarazione e inizializzazione possono essere fatti nella stessa riga
Sequenze di caratteri che non possono essere usate come identificatori Le parole riservate Sequenze di caratteri che non possono essere usate come identificatori
Vengono dichiarate della variabili con l’attributo FINAL Le costanti in Java Non esistono Vengono dichiarate della variabili con l’attributo FINAL Se vengono utilizzate da più classi si usa anche la parola chiave STATIC final double WINDOW_WIDTH = 300; Uso dell’underscore per separare le parti del nome. I nomi delle costanti sono tutte in MAIUSCOLO Convenzioni
Visibilità variabili In Java i blocchi di istruzioni sono contrassegnati da due parentesi graffe: { //codice del blocco di istruzioni } Le variabili sono valide dal punto in cui sono dichiarate sino alla fine del blocco di istruzioni racchiuso tra le parentesi Le istruzioni contenute nel blocco della WHILE sono ripetute fino a quando l’espressione è verificata, ossia se ha un valore diverso da 0.
Gli Operatori (1) 5 categorie Sono caratteri speciali per istruire il compilatore sull’operazione che deve compiere con alcuni operandi variabili espressioni valori costanti 5 categorie Monadici (unari) Agiscono su un solo operando Diadici (binari) Posti tra 2 operandi Ternari Agiscono su 3 operandi Suffissi Posti dopo l’operando Prefissi Posti prima dell’operando Equivale a: [<inizializzazione>] while ([<condizione>]) { <blocco> [<incremento>] } Le tre componenti di un ciclo for sono delle espressioni. Generalmente: <inizializzazione> inizializza l’indice (variabile di controllo del ciclo) <condizione> controlla il limite superiore dell’indice <incremento> modifica il valore dell’indice Attenzione: for( ; ; ){...} genera un loop infinito
(binari su numeri interi) Gli Operatori (2) Java possiede 44 operatori predefiniti,divisi in 4 categorie base: Bitwise (binari su numeri interi) Aritmetici Logici Relazionali
Gli operatori aritmetici Unari ++ incrementa la variabile di 1 -- decrementa la variabile di 1 count =5; Notazione postfissa Notazione prefissa count++; ++count; restituisce 5 e incrementa count incrementa count e restituisce 6; + - * / Divisione per interi se entrambi gli argomenti sono interi e la divisione di numeri in virgola mobile in tutti gli altri casi Binari
Gli operatori relazionali Confrontano i due operandi determinando la relazione che intercorre tra di essi Operatore Risultato == Uguale a != Diverso da > maggiore < minore >= Maggiore o uguale <= Minore o uguale Ai Riferimenti A tutti i tipi primitivi 3=7 Errore di compilazione Attenzione alla differenza 3==7 Restituisce False
Gli operatori Logici o Booleani Eseguono operazioni logiche tra gli operandi Operatore Risultato || OR && AND ! NOT == Uguale a != Non uguale a op1 | | op2 op1 && op2 ! op1 op1 == op2 op1 != op2
Non sono da utilizzare come operatori logici Gli operatori Bitwise Permettono di effettuare operazioni booleane per ciascun bit degli operandi Non sono da utilizzare come operatori logici & | ^ ~ AND OR XOR NOT
Gli operatori di Assegnamento Abbreviazioni delle istruzioni per assegnare o modificare Il valore delle variabili int i = 0; i = i + 2; i += 2; += op1 += op2 op1 = op1 + op2; -= op1 -= op2 op1 = op1 - op2; *= op1 *= op2 op1 = op1 * op2; /= op1 /= op2 op1 = op1 / op2; %= op1 %= op2 op1 = op1 % op2; &= op1 &= op2 op1 = op1 & op2;
L’operatore di CAST Convertire un valore da un tipo ad un altro compatibilità tra i due tipi di dati Il cast (tipo) si applica sia a tipi primitivi (int, char,…) che ad oggetti Esempio: dd = (double) x; converte il valore di x in double int x=3; double d=4.2; double dd; x = (int) d; converte e approssima il valore di d Promozioni da un tipo ad uno più ampio sono permesse implicitamente. Non sono permesse conversioni implicite a tipi più ristretti.