SlideShare a Scribd company logo
Java Hello World
Il primo esempio
Primo esempio
public 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 Fabio
public 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
•double 8 byte
• Altri tipi primitivi
•boolean 1 byte vale solo true o false
•char 2 byte codifica UNICODE
Conversioni tra tipi di dati
Come 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 multipla
switch(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 iniziale
while(a<10)
{
s+=a++;
}
//condizione finale
do
{
s+=a++;
}
while(a<10);
//ciclo a contatore (a condizione iniziale)
for (int i=0;i<10;i++)
{
s+=i;
}
Commenti standard
Commenti in linea
// commento su una sola riga
Commenti su più linee
/*
testo del commento
su 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 primitivi
Il 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 stringa
String cognome=new String(“Rossi”);
nome=nome.toUpperCase(); //Crea una nuova stringa tutta maiuscola
//Si noti che i metodi sono associati all’oggetto
nome=nome + “!”; //Crea una nuova stringa = Paolo!
nome=nome+1; //Conatenazione tra stinghe e tipi primitivi
nome=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 wrapper
Esistono classi corrispondenti a tutti i tipi primitivi ovvero:
Integer
Double
Float
Long
Boolean
Short
Byte
Sono molto utili quando è necessario attuare conversioni da Stringa a Numero, o
ad esempio in conversioni da decimale a Esadecimale, Binario, Ottale…
Ad esempio
String argomento=args[0];
int n=Integer.parseInt(argomento);
double x=Double.parseDouble(strValue);
Integer
La 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 intero
int 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 specifici
toBinaryString(), toHexString()…..
Character
La classe Charcter dispone di alcuni metodi per determinare il tipo di carattere:
boolean b=Character.isDigit(ch); //determina se ch è un numero
boolean b=Character.isISOControl(ch); //determina se ch è di controllo
boolean b=Character.isLetter(ch); //determina se ch è una lettera
boolean 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();

More Related Content

What's hot

Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Cristian Randieri PhD
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
rik0
 
Java lezione2
Java lezione2Java lezione2
Java lezione2
Maurizio Cozzetto
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusionePiero Fraternali
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matriciguest60e9511
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatoriMajong DevJfu
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamicaguest60e9511
 
11 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 211 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 2Majong DevJfu
 
Java lezione 3
Java lezione 3Java lezione 3
Java lezione 3
Sergio Ronchi
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++
Ilio Catallo
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
Vincenzo De Maio
 
Corso c++
Corso c++Corso c++
Corso c++
Antonio Furone
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
Alberto Minetti
 
Algoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingAlgoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decoding
danielenicassio
 

What's hot (20)

Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
Lezioni di programmazione in c le stringhe By Cristian Randieri - www.intelli...
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
 
2006 Py02 base
2006 Py02 base2006 Py02 base
2006 Py02 base
 
Java lezione2
Java lezione2Java lezione2
Java lezione2
 
2008 python
2008 python2008 python
2008 python
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matrici
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamica
 
3 Linguaggioc
3   Linguaggioc3   Linguaggioc
3 Linguaggioc
 
11 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 211 - Programmazione: Tipi di dato strutturati pt. 2
11 - Programmazione: Tipi di dato strutturati pt. 2
 
Java lezione 3
Java lezione 3Java lezione 3
Java lezione 3
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++
 
2006 Py03 intermedio
2006 Py03 intermedio2006 Py03 intermedio
2006 Py03 intermedio
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
 
Corso c++
Corso c++Corso c++
Corso c++
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Pillole di C++
Pillole di C++Pillole di C++
Pillole di C++
 
06 2 vector_matrici
06 2 vector_matrici06 2 vector_matrici
06 2 vector_matrici
 
Algoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingAlgoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decoding
 

Viewers also liked

Design Patterns
Design PatternsDesign Patterns
Design Patterns
Sergio Ronchi
 
Sql 2
Sql 2Sql 2
Oracle 3 (sq lnet)
Oracle 3 (sq lnet)Oracle 3 (sq lnet)
Oracle 3 (sq lnet)
Sergio Ronchi
 
Java lezione 2
Java lezione 2Java lezione 2
Java lezione 2
Sergio Ronchi
 
Java lezione 11
Java lezione 11Java lezione 11
Java lezione 11
Sergio Ronchi
 
Java lezione 9
Java lezione 9Java lezione 9
Java lezione 9
Sergio Ronchi
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
Sergio Ronchi
 
Java lezione 13
Java lezione 13Java lezione 13
Java lezione 13
Sergio Ronchi
 
Java lezione 15
Java lezione 15Java lezione 15
Java lezione 15
Sergio Ronchi
 
Sql 4
Sql 4Sql 4
Java lezione 8
Java lezione 8Java lezione 8
Java lezione 8
Sergio Ronchi
 
Sql 3
Sql 3Sql 3
Sql 1
Sql 1Sql 1
MySQL
MySQLMySQL
Oracle PL sql 2
Oracle PL sql 2Oracle PL sql 2
Oracle PL sql 2
Sergio Ronchi
 
Oracle 2 (sqlplus)
Oracle 2 (sqlplus)Oracle 2 (sqlplus)
Oracle 2 (sqlplus)
Sergio Ronchi
 
Java lezione 19
Java lezione 19Java lezione 19
Java lezione 19
Sergio Ronchi
 
Oracle PL sql 3
Oracle PL sql 3Oracle PL sql 3
Oracle PL sql 3
Sergio Ronchi
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
Sergio Ronchi
 

Viewers also liked (19)

Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Sql 2
Sql 2Sql 2
Sql 2
 
Oracle 3 (sq lnet)
Oracle 3 (sq lnet)Oracle 3 (sq lnet)
Oracle 3 (sq lnet)
 
Java lezione 2
Java lezione 2Java lezione 2
Java lezione 2
 
Java lezione 11
Java lezione 11Java lezione 11
Java lezione 11
 
Java lezione 9
Java lezione 9Java lezione 9
Java lezione 9
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
Java lezione 13
Java lezione 13Java lezione 13
Java lezione 13
 
Java lezione 15
Java lezione 15Java lezione 15
Java lezione 15
 
Sql 4
Sql 4Sql 4
Sql 4
 
Java lezione 8
Java lezione 8Java lezione 8
Java lezione 8
 
Sql 3
Sql 3Sql 3
Sql 3
 
Sql 1
Sql 1Sql 1
Sql 1
 
MySQL
MySQLMySQL
MySQL
 
Oracle PL sql 2
Oracle PL sql 2Oracle PL sql 2
Oracle PL sql 2
 
Oracle 2 (sqlplus)
Oracle 2 (sqlplus)Oracle 2 (sqlplus)
Oracle 2 (sqlplus)
 
Java lezione 19
Java lezione 19Java lezione 19
Java lezione 19
 
Oracle PL sql 3
Oracle PL sql 3Oracle PL sql 3
Oracle PL sql 3
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
 

Similar to Java Lezione 1

lezione1.pdf
lezione1.pdflezione1.pdf
lezione1.pdf
dttdigi
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)STELITANO
 
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
Onofrio Panzarino
 
Dal c a Java (3/3)
Dal c a Java (3/3)Dal c a Java (3/3)
Dal c a Java (3/3)
Marcello Missiroli
 
Array
ArrayArray
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
K-Tech Formazione
 
Dal C a Java (1/3)
Dal C a Java (1/3)Dal C a Java (1/3)
Dal C a Java (1/3)
Marcello Missiroli
 
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
I.S.I.S. "Antonio Serra" - Napoli
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
Pasquale Paola
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
JUG Genova
 
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
I.S.I.S. "Antonio Serra" - Napoli
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)STELITANO
 
Lezione 1: I/O in Java
Lezione 1: I/O in JavaLezione 1: I/O in Java
Lezione 1: I/O in Java
Andrea Della Corte
 
R Vectors
R VectorsR Vectors
R Vectors
Davide Rambaldi
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...UltraUploader
 
Presentazione Oz - Mozart
Presentazione Oz - MozartPresentazione Oz - Mozart
Presentazione Oz - Mozart
fede
 

Similar to Java Lezione 1 (20)

Corso Java
Corso JavaCorso Java
Corso Java
 
Template
TemplateTemplate
Template
 
lezione1.pdf
lezione1.pdflezione1.pdf
lezione1.pdf
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)
 
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
 
Dal c a Java (3/3)
Dal c a Java (3/3)Dal c a Java (3/3)
Dal c a Java (3/3)
 
Array
ArrayArray
Array
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
 
Java codestyle & tipstricks
Java codestyle & tipstricksJava codestyle & tipstricks
Java codestyle & tipstricks
 
Dal C a Java (1/3)
Dal C a Java (1/3)Dal C a Java (1/3)
Dal C a Java (1/3)
 
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
 
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)
 
Lezione 1: I/O in Java
Lezione 1: I/O in JavaLezione 1: I/O in Java
Lezione 1: I/O in Java
 
R Vectors
R VectorsR Vectors
R Vectors
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
 
Presentazione Oz - Mozart
Presentazione Oz - MozartPresentazione Oz - Mozart
Presentazione Oz - Mozart
 

More from Sergio Ronchi

Java lezione 18
Java lezione 18Java lezione 18
Java lezione 18
Sergio Ronchi
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
Sergio Ronchi
 
Java lezione 16
Java lezione 16Java lezione 16
Java lezione 16
Sergio Ronchi
 
Java lezione 12
Java lezione 12Java lezione 12
Java lezione 12
Sergio Ronchi
 
Java lezione 7
Java lezione 7Java lezione 7
Java lezione 7
Sergio Ronchi
 
Java lezione 6
Java lezione 6Java lezione 6
Java lezione 6
Sergio Ronchi
 
Java lezione 5
Java lezione 5Java lezione 5
Java lezione 5
Sergio Ronchi
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
Sergio Ronchi
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
Sergio Ronchi
 
Oracle PLSql 4
Oracle PLSql 4Oracle PLSql 4
Oracle PLSql 4
Sergio Ronchi
 
Oracle PL sql 1
Oracle PL sql 1Oracle PL sql 1
Oracle PL sql 1
Sergio Ronchi
 
Oracle 1
Oracle 1Oracle 1
Oracle 1
Sergio Ronchi
 
Sql 5
Sql 5Sql 5

More from Sergio Ronchi (13)

Java lezione 18
Java lezione 18Java lezione 18
Java lezione 18
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Java lezione 16
Java lezione 16Java lezione 16
Java lezione 16
 
Java lezione 12
Java lezione 12Java lezione 12
Java lezione 12
 
Java lezione 7
Java lezione 7Java lezione 7
Java lezione 7
 
Java lezione 6
Java lezione 6Java lezione 6
Java lezione 6
 
Java lezione 5
Java lezione 5Java lezione 5
Java lezione 5
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Oracle PLSql 4
Oracle PLSql 4Oracle PLSql 4
Oracle PLSql 4
 
Oracle PL sql 1
Oracle PL sql 1Oracle PL sql 1
Oracle PL sql 1
 
Oracle 1
Oracle 1Oracle 1
Oracle 1
 
Sql 5
Sql 5Sql 5
Sql 5
 

Java Lezione 1

  • 1. Java Hello World Il primo esempio
  • 2. Primo esempio public 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
  • 3. Argomenti da linea di comando Invocando un’applicazione da linea di comando è possibile introdurre alcuni argomenti: Ad esempio: java Benvenuto Fabio public 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
  • 4. 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.
  • 5. Tipi di dati primitivi • Interi •int 4 byte •long 8 byte •short 2 byte •byte 1 byte • Reali •float 4 byte •double 8 byte • Altri tipi primitivi •boolean 1 byte vale solo true o false •char 2 byte codifica UNICODE
  • 6. Conversioni tra tipi di dati Come 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.
  • 7. 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) > < >= <= !=
  • 8. Strutture di controllo: condizioni if (a==3&&c!=1) { c=c+4; } else { c=c-4; b=1; }
  • 9. Condizione ad uscita multipla switch(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”); }
  • 10. Cicli //condizione iniziale while(a<10) { s+=a++; } //condizione finale do { s+=a++; } while(a<10); //ciclo a contatore (a condizione iniziale) for (int i=0;i<10;i++) { s+=i; }
  • 11. Commenti standard Commenti in linea // commento su una sola riga Commenti su più linee /* testo del commento su più linee */
  • 12. 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
  • 13. Tipi di dati non primitivi Il 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 stringa String cognome=new String(“Rossi”); nome=nome.toUpperCase(); //Crea una nuova stringa tutta maiuscola //Si noti che i metodi sono associati all’oggetto nome=nome + “!”; //Crea una nuova stringa = Paolo! nome=nome+1; //Conatenazione tra stinghe e tipi primitivi nome=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)
  • 14. Classi wrapper Esistono classi corrispondenti a tutti i tipi primitivi ovvero: Integer Double Float Long Boolean Short Byte Sono molto utili quando è necessario attuare conversioni da Stringa a Numero, o ad esempio in conversioni da decimale a Esadecimale, Binario, Ottale… Ad esempio String argomento=args[0]; int n=Integer.parseInt(argomento); double x=Double.parseDouble(strValue);
  • 15. Integer La 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 intero int 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 specifici toBinaryString(), toHexString()…..
  • 16. Character La classe Charcter dispone di alcuni metodi per determinare il tipo di carattere: boolean b=Character.isDigit(ch); //determina se ch è un numero boolean b=Character.isISOControl(ch); //determina se ch è di controllo boolean b=Character.isLetter(ch); //determina se ch è una lettera boolean 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.
  • 17. 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();