PDA

View Full Version : [java - c] ; dopo la graffa


frasca
07-02-2010, 18:30
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

PGI-Bis
07-02-2010, 18:52
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.

frasca
07-02-2010, 20:35
Grazie