Java/Il linguaggio

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

In questa sezione viene fornito un primo assaggio degli elementi del linguaggio, che verranno approfonditi nella seconda parte del libro.

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.

// Questo è un commento, viene ignorato dal compilatore
class PrimoEsempioDiCodice{
    // Qui siamo all'interno della classe PrimoEsempioDiCodice.
    // L'interno della classe viene delimitato dalle parentesi graffe.
    // Nella prossima riga verrà dichiarato il metodo main
    public static void main( String[] args )
    {
      // Qui siamo all'interno del metodo main
      System.out.println( "Ciao mondo!" );
    }
    // Qui non siamo più all'interno del metodo main, ma ancora dentro alla classe
}

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[modifica]

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.

class SommaDueNumeri{

    // Dichiara il metodo che effettua la somma di due numeri
    public static int somma( int primoAddendo, int secondoAddendo ){
        // Crea una nuova variabile per salvare il risultato della somma
        int risultatoSomma;
        // Calcola la somma delle due variabili
        risultatoSomma = primoAddendo + secondoAddendo;
        // Restituisci il risultato della somma
        return risultatoSomma;
    }

    public static void main( String[] args )
    {
        System.out.println( somma( 3, 5 ) );
    }
}

Variabili e visibilità[modifica]

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[modifica]

E' possibile eseguire delle istruzioni a secondo del valore di una variabile, usando la struttura if. Ad esempio:

class StampaSeMaggioreDi5{
    public static void main(String[] args)
    {
      int a = 10;
      if( a > 5){
        System.out.println("Il valore della variabile 'a' è maggiore di 5.");
      }
    }
}

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.

class StampaComunqueMaDimmiSeMaggiore{
    public static void main(String[] args)
    {
      int a = 10;
      if( a > 5){
        System.out.println("Il valore della variabile 'a' è maggiore di 5.");
      }else{
        System.out.println("Il valore della variabile 'a' è minore di 5.");
      }
    }
}

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[modifica]

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.

public class TabellinaDelSette {
    public static void main(String[] args){
        // Variabile da moltiplicare per 7
        int i = 1;
        System.out.println(7 * i); // Stampa 7
        i = i + 1;
        System.out.println(7 * i); // Stampa 14
        i = i + 1;
        System.out.println(7 * i); // Stampa 21
        i = i + 1;
        System.out.println(7 * i); // Stampa 28
        i = i + 1;
        System.out.println(7 * i); // Stampa 35
        i = i + 1;
        System.out.println(7 * i); // Stampa 42
        i = i + 1;
        System.out.println(7 * i); // Stampa 49
        i = i + 1;
        System.out.println(7 * i); // Stampa 56
        i = i + 1;
        System.out.println(7 * i); // Stampa 63
        i = i + 1;
        System.out.println(7 * i); // Stampa 70
    }
}

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:

public class TabellinaDelSetteWhile {
    public static void main(String[] args){
        // Variabile da moltiplicare per 7
        int i = 1;
        // Ripeti finché i è minore di 10
        while(i<=10) {
            System.out.println(7 * i); // Stampa 7 * i
            i = i + 1; // incrementa il valore di i
        }
    }
}

Ciò può essere fatto in modo ancora più compatto usando il ciclo for:

public class TabellinaDelSetteFor {
    public static void main(String[] args){
        // Dichiara la variabile i all'interno del for
        // Ripete il ciclo finché i è minore di 10
        // Ogni volta incrementa i di 1
        for(int i = 1; i <= 10; i = i + 1){
            System.out.println(7 * i);
        }
    }
}