Java Programmazione in Java Guido Boella Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino [email protected] http://www.di.unito.it/~guido Commenti /* Commento su piu` linee */ public class BenvenutoInJava { public static void main(String[] args) { System.out.println("Benvenuto in Java!"); // Commento su una sola linea } } Commenti su piu` linee possono essere fatti racchiudendoli tra i simboli /* e */ Commenti su di una sola linea possono essere fatti facendoli precedere dal simbolo // I commenti non compaiono nel codice eseguibile Esiste anche il commento racchiuso tra /** e */ 2 Classi come contenitori di metodi specificatore di accesso class NomeClasse { /* definizione metodi */ spec.accesso static tipo nomeMetodo(dichiarazione variabili) { istruzione; istruzione;… } spec.accesso static tipo nomeMetodo(dichiarazione variabili) { istruzione; istruzione;… } } 3 Definizione di un metodo spec.accesso static tipo nomeMetodo(tipo nomeVar, tipo nomeVar, …) { /* dichiarazione variabili */ tipo nomeVar; tipo nomeVar; … /* inizializzazione variabili */ nomeVar = valore; nomeVar = valore; … /* chiamate a metodi */ NomeClasse.nomeMetodo(valore); nomeVar = NomeClasse.nomeMetodo(valore); /*se tipo di ritorno non è void */ return valore; } 4 Classi come contenitori di metodi public class MyMath { /* definizione metodi */ public static int quadrato(int x) { istruzione; istruzione;… } public static double percento(int lire, double tasso) { istruzione; istruzione;… } } 5 Tipi primitivi Java e` un linguaggio fortemente tipato, ogni variabile deve avere un tipo dichiarato Esistono otto tipi primitivi, sei per i tipi di numeri, uno per i caratteri (codifica Unicode) e uno per boolean int (4 byte) short (2 byte) long (8 byte) byte (1 byte) - float (4 byte) - double (8 byte) - char - boolean I tipi primitivi non sono oggetti (puntatori) Non dipendono dalla macchina di destinazione void indica che un metodo non ha tipo (non si usa con le variabili) 6 Dichiarazione di variabile identificatore = lettera (lettera | cifra)* lettera e cifra nel senso “Unicode” Lunghezza illimitata Per convenzione si usano nomi che iniziano con una lettera minuscola L’inizializzazione e` come in C int variabileIntera; long variabileInteraDi8byte; double piGrecoApprossimato = 3.1415; boolean flag = false; /* o false o true ! Assegnamento */ 7 Operatori Operatori aritmetici: + - * / % Assegnamento e operatori aritmetici: += -= *= /= %= (es. a += i;) Operatori di incremento (in posizione di prefisso o di suffisso di una variabile numerica): ++ e -- (es. i++; a=--i;) Operatori relazionali e booleani: == != < > <= >= && || ! Operatori sui bit: & | ^ ~ >> << Parentesi: ( ) 8 Valori /* un numero è un valore */ 1 /* una variabile inizializzata è un valore */ x /* una operazione fra valori + un valore */ 1+1 x+1 x*x x+y /* una chiamata ad un metodo non void è un valore */ MyMath.quadrato(x) MyMath.quadrato(2) Math.round(2.3) Console.readInt(“dimmi…”) /* misto */ x + MyMath.quadrato(2) 2 + MyMath.quadrato(x) 9 Definizione di un metodo public static void quadrato(int x) { /* dichiarazione variabili */ int risultato; /* inizializzazione variabili */ risultato = x * x; /* chiamate a metodi */ /*se tipo di ritorno non è void */ return risultato; } 10 Definizione di un metodo public static void salutatore(String nome) { /* dichiarazione variabili */ String saluto; /* inizializzazione variabili */ saluto = “Ciao “ + nome; /* chiamate a metodi */ System.out.println(saluto); /*se tipo di ritorno non è void */ } 11 Istruzioni condizionali if (condizione) istruzione; if (condizione) { istruzione; istruzione;… } if (condizione) istruzione; else istruzione; 12 Istruzioni condizionali if (x==0) System.out.println(“zero”); if (x!=0) { x=x+1; System.out.println(“ho incrementato x”); } if (x<0) System.out.print(“minore di zero”); else System.out.print(“maggiore o uguale a zero”); 13 Istruzioni cicliche OGNI VOLTA CHE LA CONDIZIONE E’ VERA ESEGUI L’ISTRUZIONE (O LE ISTRUZIONI) SPECIFICATE while (condizione) istruzione; while (condizione) { istruzione; istruzione;… } 14 Istruzioni cicliche while (x!=0) x=Console.readInt(“dimmi..:”); while (e<0) { risultato = risultato * b; e = e – 1; } while (capitale<2000) { capitale = capitale + MyMath.percento(capitale, tasso); anni = anni + 1; } 15 For for (inizializzazione var; condizione; step) { istruzione;…} Inizializzazione: istruzione che dichiara o assegna valore ad una variabile: int x = 0; i=1;… Condizione: x<10; i<0; x!=i; Step: istruzione che modifica il valore della variabile utilizzata: x=x+1; i=i*2; x=x-1; … for (int i=0; i<10; i=i+1) System.out.println(i); for (int i=0; i<e; i=i+1) {ris = ris * b;} 16 Classi come generatori di oggetti specificatore di accesso class NomeClasse { /* definizione variabili di istanza */ specificatore di accesso dichiarazione var; specificatore di accesso dichiarazione var; … /* definizione costruttore */ specificatore di accesso NomeClasse(dichiarazione variabili) { inizializzazione variabili di istanza; istruzione;… } /* definizione metodi */ specificatore di accesso tipo nomeMetodo(dich. variabili) { istruzione; istruzione;… } } 17 Classi come generatori di oggetti public class Conto { /* definizione variabili di istanza */ private int capitale; public String nome; /* definizione costruttore */ public Conto(int lire, String n) { capitale = lire; nome = n; } /* definizione metodi */ public void deposito(int lire) { capitale = capitale + lire; } } 18 Classi come generatori di oggetti specificatore di accesso class NomeClasse { /* definizione variabili di istanza */ specificatore di accesso static dichiarazione var; specificatore di accesso static dichiarazione var;… /* definizione variabili di istanza */ specificatore di accesso dichiarazione var; specificatore di accesso dichiarazione var; … /* definizione costruttore */ specificatore di accesso NomeClasse(dichiarazione variabili) { … } /* definizione metodi */ specificatore di accesso tipo nomeMetodo(dichiarazione var) { 19 …