Java Lezione 1
-
Upload
sergio-ronchi -
Category
Software
-
view
37 -
download
1
Transcript of Java Lezione 1
Java Hello World
Il primo esempio
Primo esempiopublic class CiaoMondo{ public static void main(String []args)
{ System.out.println("Ciao Mondo");}
}
Possiamo notare in questo piccolo esempio:-che ogni programma Java è O.O. infatti è contenuto in una classe-L’uso delle parole chiave public, class, static, void-La presenza del metodo main che serve come punto d’ingresso dell’applicazione-Il file che contiene il sorgente deve avere lo stesso nome della classe pubblica, in questo caso CiaoMondo.java (si notino le maiuscole)-Le parentesi graffe che racchiudono i blocchi di istruzioni
Argomenti da linea di comando
Invocando un’applicazione da linea di comando è possibile introdurre alcuni argomenti:Ad esempio: java Benvenuto Fabiopublic class Benvenuto{ public static void main(String []args)
{ System.out.println("Ciao “ + args[0]);}
}Si può notare che args[] è un array di stringhe è viene automaticamente inizializzato con gli argomenti da linea di comando.Gli array verranno approfonditi in seguito, ma si noti che args[0] rappresenta il primo argomento, nel esempio sarà Fabio.Con args.length è possibile conoscere il numero di argomenti passati da linea di comando
Le variabili
Le variabili sono in java fortemente tipizzate, i tipi di dati primitivi sono molto simili a quelli del C.Come in C++ le variabili possono essere dichiarate in qualsiasi punto del codice e assumono una visibilità che dipende essenzialmente dal blocco di istruzioni (parentesi graffe) in cui si trovano.
Tipi di dati primitivi• Interi•int 4 byte
•long 8 byte•short 2 byte•byte 1 byte
• Reali•float 4 byte•double8 byte
• Altri tipi primitivi•boolean 1 byte vale solo true o false•char 2 byte codifica UNICODE
Conversioni tra tipi di datiCome in C esiste l’operatore ‘cast’
double c=1.9;int a=(int)c; //attenzione non si tratta di un arrotondamento
char ch=‘a’;int ascii=(int)ch; //si ottiene il codice ascii della lettera
Nel caso di conversioni tra Stringhe e numeri non è possibile utilizzare il cast, ma si dovranno usare metodi diversi.
Operatori•ARITMETICI
• Moltiplicazione *• Divisione /• Addizione +• Sottrazione –• Divisione Intera / purché i termini siano interi• Resto della divisione intera %• Le parentesi ()
•LOGICI • || (OR) &&(AND) !(NOT)
•OPERATORI SUI BIT• | (OR bit per bit) &(AND) >>(SHIFT a destra) <<(SHIFT a
sinistra)•CONFRONTI
• == (uguali) > < >= <= !=
Strutture di controllo: condizioni
if (a==3&&c!=1){ c=c+4;}else { c=c-4; b=1; }
Condizione ad uscita multiplaswitch(voto){ case 5: case 4: System.out.println(“Insufficiente”); break; case 6: System.out.println(“Sufficiente”); break; case 7: System.out.println(“Discreto”); break; default: System.out.println(“voto non valido”);
}
Cicli//condizione inizialewhile(a<10){ s+=a++;}
//condizione finaledo{ s+=a++;}while(a<10);
//ciclo a contatore (a condizione iniziale)for (int i=0;i<10;i++){ s+=i;}
Commenti standardCommenti in linea
// commento su una sola riga
Commenti su più linee/*
testo del commentosu più linee
*/
Commenti per utilizzo di javadoc /**
* Commento javadoc* può contenere tag HTML* <b>Grassetto</b>*/
Esistono anche opportuni tag per javadoc@author@param parametri dei metodi@return valori di ritorno di un metodo@see vedi anche..@version 1.0@since JDK1.0
Tipi di dati non primitiviIl primo tipo di dato non primitivo che si incontra è String.String permette di memorizzare dati di tipo stringa (alfanumerici). Si tratta
in realtà di una classe predefinita che possiede diversi metodi per manipolare le stringhe.String nome=“Paolo”; //Crea un oggetto di tipo stringaString cognome=new String(“Rossi”);nome=nome.toUpperCase(); //Crea una nuova stringa tutta maiuscola
//Si noti che i metodi sono associati all’oggettonome=nome + “!”; //Crea una nuova stringa = Paolo!nome=nome+1; //Conatenazione tra stinghe e tipi primitivinome=nome +’a’;String s=“”+2;//Conversione da tipo primitivo a stringa
RICORDIAMO i metodi di uso comune come length(), equals(Str), compareTo(Str), charAt(n),
substring(b),substring(b,e)
Classi wrapperEsistono classi corrispondenti a tutti i tipi primitivi ovvero:IntegerDoubleFloatLongBooleanShortByteSono molto utili quando è necessario attuare conversioni da Stringa a
Numero, o ad esempio in conversioni da decimale a Esadecimale, Binario, Ottale…Ad esempioString argomento=args[0];int n=Integer.parseInt(argomento);double x=Double.parseDouble(strValue);
IntegerLa classe Integer è molto usata per convertire le stringhe in interi, ma
dispone di interessanti metodi per convertire da una base all’altra i numeri:
int n=Integer.parseInt(str,2); //Converte la stringa binaria str in interoint n= Integer. parseInt(str,16); //Converta la stringa esadecimale str in
intero
String s=Integer.toString(10,2); //converte 10 nella corrispondente stringa binaria
Esistono anche metodi specificitoBinaryString(), toHexString()…..
CharacterLa classe Charcter dispone di alcuni metodi per determinare il tipo di
carattere:
boolean b=Character.isDigit(ch); //determina se ch è un numeroboolean b=Character.isISOControl(ch); //determina se ch è di controlloboolean b=Character.isLetter(ch); //determina se ch è una letteraboolean b=Character.isLetterOrDigit(ch);
//determina se ch è una lettera o un numero
isUpperCase(ch); isLowerCase(ch); isWhitespace(ch)
Sono altri metodi dal significato abbastanza comprensibile.
Altri usi delle classi wrapper
Le classi Wrapper fungono anche da contenitori per valori delle variabili primitivi:
int k=5;Integer kappa=new Integer(k);
In tal modo kappa diventa un oggetto e può essere utilizzato in tutti i contesti in cui non è possibile usare delle variabili primitive: ad esempio potrebbe essere inserito in una Lista concatenata.Gli oggetti così istanziati dispongono di numerosi metodi, ad esempio è sempre
possibile ottenere di nuovo il tipo primitivo di origine: k=kappa.intValue();
Si noti la differenza tra i metodi statici di Integer (detti metodi di classe):int j=Integer.parseInt(str);
E quelli non statici (detti di istanza)k=kappa.intValue();