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 compilazione — javac 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 lineOmettere 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 closesIl 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:
totaleTotalsono 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
UpperCamelCase—BankAccount,HttpServer. - I metodi e le variabili usano
lowerCamelCase—accountBalance,parseInput. - Le costanti usano
UPPER_SNAKE_CASE—MAX_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 switchPiù 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.
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
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.