# Il linguaggio Java

In questa lezione viene fornito una introduzione degli elementi del linguaggio Java, che verranno saranno poi approfonditi in specifiche lezioni.
Il linguaggio Java è fortemente isprirato a quello di C e C++, questa famiglia di linguaggi viene detta delle parentesi graffe, perché usa le parentesi graffe per delimitare i blocchi di codice.
L'esempio di codice serve a stampare il testo Ciao mondo!. In questo codice vengono fatte diverse cose:
* viene dichiarata una classe che si chiama PrimoEsempioDiCodice. E' fondamentale che il nome del file ed il nome della classe siano identici, tenendo conto anche delle maiuscole e delle minuscole. Se il nome del file e quello della classe non corrispondono, il compilatore restituisce un messaggio di errore e termina. Il contenuto della classe è quello che sta all'interno delle prime parentesi graffe;
* all'interno della classe PrimoEsempioDiCodice viene dichiarato un metodo che si chiama main. Anche qui, per delimitare il contenuto del metodo main vengono usate le parentesi graffe;
* all'interno del metodo main viene stampato il testo.

## Classi e metodi

Una classe può contenere dei metodi. Ogni metodo fa qualcosa e può restituire delle informazioni. Ad esempio, la classe seguente effettua la somma di due interi.

## Variabili e visibilità

E' possibile dichiarare variabili sia all'interno di classi che di metodi. Le variabili private dichiarate all'interno di una classe sono visibili solo all'interno di quella classe. La stessa cosa vale per le variabili dichiarate all'interno di un metodo. Se si cerca di usare una variabile fuori dal blocco nel quale la variabile è stata dichiarata, si ha un errore di sintassi.
Le possibili visibilità sono:
* public: la variabile è accessibile da qualunque classe;
* protected: la variabile è accessibile da sottoclassi o da classi che sono nello stesso package;
* default, detto anche package private: la variabile è accessibile all'interno del package. Questo è l'unico tipo di visibilità al quale non è associata una parola chiave di Java, perché è di default;
* private: la variabile è accessibile unicamente all'interno della classe.

## Strutture di controllo

E' possibile eseguire delle istruzioni a secondo del valore di una variabile, usando la struttura if. Ad esempio:
Il listato sopra riportato crea una variabile intera e assegna il valore 10 alla variabile. Successivamente verifica che il valore della variabile sia maggiore di 5 ed in caso sia così stampa un messaggio.
Il listato precedente stampa comunque un messaggio. Se il valore della variabile a è minore di 5, viene stampato un messaggio, altrimenti viene stampato un altro messaggio.

## Strutture di iterazione

Le strutture di iterazione servono ad eseguire un insieme di istruzioni tante volte diverse. Un esempio è quello di stampare la tabellina del 7. Per stampare la tabellina del 7 dobbiamo eseguire diverse volte lo stesso codice, anche se con valori diversi.
Per stampare la tabellina del 7 ho bisogno di una variabile che farò valere da 1 a 10 e moltiplicherò per 7 di volta in volta.
Questo codice contiene tante righe che si ripetono. Quando si verifica una situazione del genere, è utile usare una struttura di iterazione, ad esempio il ciclo while:
Ciò può essere fatto in modo ancora più compatto usando il ciclo for: