Il codice nel seguente frammento funziona perfettamente. Conta il numero di oggetti creati utilizzando un campo statico di tipo int
che è cnt
.Un ciclo a linea singola con una coppia obbligatoria di parentesi graffe in Java
public class Main
{
private static int cnt;
public Main()
{
++cnt;
}
public static void main(String[] args)
{
for (int a=0;a<10;a++)
{
Main main=new Main();
}
/*for (int a=0;a<10;a++)
Main main=new Main();*/
System.out.println("Number of objects created : "+cnt+"\n\n");
}
}
Visualizza l'output seguente.
Number of objects created : 10
L'unica domanda è che quando si rimuove la coppia di parentesi graffe da quanto sopra for
loop (vedere la commentata for
loop), un errore di compilazione viene emesso indicando
nonun'istruzione .
Perché in questa particolare situazione, un paio di parentesi graffe è obbligatoria anche se il loop contiene solo una singola istruzione?
'Main main = new Main();' è una dichiarazione, non una dichiarazione. – Mysticial
@Mysticial: una dichiarazione con inizializzazione. Perché la parte di inizializzazione non è considerata una dichiarazione? – Razvan
@Razvan Non vedo motivi tecnici per cui non possa. Quindi sembra essere una scelta di progettazione da Java, o C/C++ (dove Java ha ereditato gran parte della sua semantica di base). – Mysticial