View Full Version : [java - c] ; dopo la graffa
salve ragazzi notate i ; dopo le graffa del main (in genere dopo tutte le graffe). Come mai questo programma funziona?
Ho impiegato un pò di tempo nel provare ad aggiungere i togliere ; dopo le parentesi graffe di diversi programmi, anche scritti in c e sembra funzionino normalmente... C'è qualche differenza? E perchè non ho trovato questo aspetto della sintassi su nessun testo?
public class Ciao
{ public static void main(String[] args)
{;
System.out.println("Ciao Ciao");
};
}
wingman87
07-02-2010, 18:35
Perché le istruzioni possono essere vuote ma terminano sempre con ;
Quindi in sostanza i ; che hai aggiunto sono istruzioni vuote
In java la questione è ampiamente trattata nelle specifiche del linguaggio, capitolo 14.
";" è un enuciato, l'enunciato vuoto.
"{}" è un blocco che è definito come un raggruppamento degli enunciati contenuti tra le parentesi graffe.
Essendo ";" un enunciato ne consegue che dentro al blocco possono apparire quanti ";" vuoi.
{;;;;;}
Se guardi la struttura di una classe Java, si nota anche il perchè tu possa mettere un ";" dopo la graffa dei metodi:
public class Bingo {
private void metodo() {
};
}
il ; appare nel corpo della classe Bingo, che è un blocco, che può quindi contenere enunciati, tra i quali l'enunciato vuoto.
E' anche ammesso:
public class Bingo {
};;;;
in via di un'eccezione (JLS 7.6) secondo cui il compilatore deve ignorare ogni ; eccedente la dichiarazione di un tipo top level. E' un'eccezione perchè le specifiche stabiliscono che l'unità di compilazione Java ammette unicamente una dichiarazione di pacakge, zero una o più dichiarazioni import, zero una o più dichiarazioni di tipo top level di cui al massimo uno può essere pubblico.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.