W3docs

Sintassi Java

Scopri la sintassi di base di Java: istruzioni, blocchi, identificatori, parole chiave, sensibilità alle maiuscole e struttura di un file sorgente.

La sintassi Java definisce la forma di un file .java: dove terminano le istruzioni, come vengono raggruppati i blocchi di codice, quali parole hanno un significato speciale per il compilatore e quali caratteri sono validi in un nome. Queste regole vengono verificate al momento della compilazionejavac si rifiuta di produrre un file .class finché non sono tutte soddisfatte — quindi impararle bene fin dall'inizio ti eviterà molti errori confusi in seguito.

Questo capitolo tratta le regole su cui ti baserai per tutto il resto del libro: la struttura di un file sorgente, le istruzioni, i blocchi, gli identificatori, le parole chiave, i commenti, la sensibilità alle maiuscole e gli spazi bianchi.

Un file sorgente Java completo

Ogni programma Java autonomo necessita di almeno una classe con un metodo main. Ecco il file minimo:

public class App {
    public static void main(String[] args) {
        System.out.println("Hello, syntax!");
    }
}

Nella pagina accadono tre cose:

  • La dichiarazione di classe public class App { ... } racchiude tutto all'interno di una classe.
  • La dichiarazione di metodo public static void main(String[] args) { ... } è il punto di ingresso del programma.
  • L'istruzione System.out.println(...) esegue il lavoro.

Il file deve essere salvato come App.java perché la classe pubblica si chiama App. Questa è una regola rigida: un file sorgente può contenere al massimo una classe public, e il nome del file deve corrispondere esattamente al nome di quella classe, maiuscole incluse. Consulta Java Hello World per il ciclo completo di compilazione ed esecuzione.

Le istruzioni terminano con un punto e virgola

Un'istruzione Java è un comando che dice al programma di fare qualcosa. Ogni istruzione termina con un punto e virgola:

int score = 0;
score = score + 5;
System.out.println(score);

Poiché è il punto e virgola — non l'interruzione di riga — a terminare un'istruzione, puoi distribuire un'istruzione lunga su più righe, oppure (con minore leggibilità) mettere più istruzioni su una sola riga:

int total = 1 + 2 + 3
          + 4 + 5;        // one statement, two lines
int a = 1; int b = 2;     // two statements, one line

Omettere il punto e virgola è l'errore più comune per i principianti. Il compilatore indicherà la riga in cui ha notato il problema, che di solito è la riga successiva a quella a cui manca effettivamente il punto e virgola — quindi quando vedi "';' expected", controlla la riga precedente a quella segnalata.

I blocchi raggruppano le istruzioni

Le parentesi graffe { e } raggruppano le istruzioni in un blocco. I corpi di classe, i corpi di metodo, i corpi di ciclo e i corpi di if sono tutti blocchi:

public class Counter {        // class block opens
    public static void main(String[] args) {   // method block opens
        for (int i = 0; i < 3; i++) {          // loop block opens
            System.out.println(i);
        }                                       // loop block closes
    }                                           // method block closes
}                                               // class block closes

Il rientro non fa parte della sintassi (il compilatore ignora gli spazi bianchi), ma ogni lettore si aspetterà quattro spazi per ogni blocco annidato. La maggior parte degli IDE lo formatta automaticamente al salvataggio.

Identificatori

Un identificatore è qualsiasi nome che scegli — per una classe, un metodo, una variabile, una costante. Le regole:

  • Inizia con una lettera, _ o $.
  • Dopo il primo carattere, può contenere anche cifre.
  • Sensibile alle maiuscole: total e Total sono nomi diversi.
  • Non può essere una parola chiave riservata (class, int, return, ecc.).
  • Nessun limite di lunghezza.

Validi: total, lineCount, _temp, $jquery, userName2. Non validi: 2lines (inizia con una cifra), line-count (trattino), class (parola chiave).

Queste sono le regole che il compilatore applica. Oltre a queste, Java ha forti convenzioni di denominazione che il compilatore ignora ma che ogni sviluppatore Java si aspetta:

  • Le classi usano UpperCamelCaseBankAccount, HttpServer.
  • I metodi e le variabili usano lowerCamelCaseaccountBalance, parseInput.
  • Le costanti usano UPPER_SNAKE_CASEMAX_SIZE.

Seguirle non è facoltativo nella pratica. Il capitolo Java Variables approfondisce la denominazione e la dichiarazione dei dati.

Parole chiave

Java riserva circa 50 parole per il linguaggio stesso. Non puoi usarle come identificatori. Quelle che vedrai più spesso:

abstract  case      do        finally    int         private     synchronized  throws
assert    catch     double    float      interface   protected   this          transient
boolean   char      else      for        long        public      throw         try
break     class     enum      if         new         return      void          while
byte      continue  extends   import     null        short       volatile      switch

Più alcune parole chiave contestuali aggiunte nel Java moderno, che hanno un significato speciale solo in determinate posizioni (var, yield, record, sealed, permits).

Sensibilità alle maiuscole

Java è sensibile alle maiuscole ovunque — nomi di classi, nomi di metodi, variabili, parole chiave. System non è la stessa cosa di system, e if non è la stessa cosa di If. Il compilatore ti dirà "cannot find symbol" se digiti male un nome.

Spazi bianchi e interruzioni di riga

Spazi, tabulazioni e interruzioni di riga tra i token sono equivalenti. Al compilatore non importa se scrivi:

int x=1+2;

oppure:

int x = 1 + 2;

Usa quello che è più leggibile; il foglio di stile standard (e il formattatore del tuo IDE) ti darà la risposta giusta.

L'unico posto in cui gli spazi bianchi contano è all'interno delle stringhe e dei letterali di carattere: "Hello world" e "Helloworld" sono valori diversi, e gli spazi tra di essi vengono mantenuti esattamente come digitati.

Commenti

Un commento è testo che il compilatore ignora completamente. Java ha tre forme:

// line comment — runs to the end of the line

/* block comment —
   can span multiple lines */

/**
 * Javadoc comment — a block comment whose first character
 * is an extra asterisk. Tools generate API docs from these.
 */

Usa i commenti per spiegare il perché di qualcosa, non per ripetere cosa fa ovviamente il codice. Il capitolo Java Comments tratta ogni forma e quando utilizzarla.

Attenzione

I commenti a blocco non si annidano. Scrivere /* outer /* inner */ */ termina il commento al primo */, e il */ rimanente diventa un errore di sintassi. Per commentare una regione che contiene già /* ... */, usa invece i commenti di riga (//).

Un programma che mette alla prova le regole

java— editable, runs on the server

Nota che ogni istruzione termina con ;, i corpi di classe e metodo sono blocchi { ... }, i nomi x, y e product sono identificatori validi, e il file verrebbe salvato come Demo.java.

Cosa c'è dopo

Il prossimo capitolo, Java Output, tratta i tre metodi di stampa (print, println, printf) che userai per esaminare ciò che i tuoi programmi stanno facendo. Successivamente, Java Data Types spiega che tipi di valori possono contenere i tuoi identificatori.

Esercitazione

Pratica
Quale affermazione sulla sintassi Java è corretta?
Quale affermazione sulla sintassi Java è corretta?
Was this page helpful?