2012-03-03 9 views
8

Ho accidentalmente scritto un'istruzione java con due punti e virgola alla fine. Il compilatore java non mostra alcun errore e viene eseguito.Perché Java non mostra un errore per il doppio punto e virgola alla fine di una dichiarazione?

Codice:

System.out.println("Length after delete the text is "+name.length());; 

a fini di apprendimento Ho provato ad aggiungere diversi personaggi dopo il punto e virgola, e il compilatore Java è mostrato l'errore di tempo di compilazione come Errore di sintassi sul gettone ")", eliminare questo token.

Questa dichiarazione:

System.out.println("Length after delete the text is "+name.length());) 

Perché java trattare il punto e virgola e altri personaggi così diversi?

risposta

28

Perché un punto e virgola doppio non viene trattato come un doppio punto e virgola ma come punto e virgola più un'istruzione vuota. E una dichiarazione vuota, che non fa nulla, non è un errore.

+3

+1, Esattamente, è molto simile alla scrittura di '{} {} {} {} (parentesi intendo)' all'interno del tuo codice ovunque. –

+1

Grazie ho autorizzato ora. Per quanto riguarda alcuni punti correlati come la tua risposta, usiamo il punto e virgola per terminare l'affermazione, ma non sapevo che il secondo punto e virgola fosse un operatore vuoto. –

+2

In realtà, è un'istruzione ** vuota **. Non c'è niente come un'espressione vuota in Java. –

1

; di per sé è un operatore vuoto, in modo da avere effettivamente due operatori nel caso originale.

+0

Grazie ho autorizzato ora.Per quanto riguarda alcuni punti correlati come la tua risposta, usiamo il punto e virgola per terminare l'affermazione, ma non sapevo che il secondo punto e virgola fosse un operatore vuoto. –

+0

+1, per queste informazioni. –

1

Il punto e virgola termina la frase.

System.out.println("Length after delete the text is "+name.length());; 

Il secondo punto e virgola indica che la frase è vuota.

System.out.println("Length after delete the text is "+name.length());) 

è sbagliato perché si sta cercando di finire una frase incompleta.

10

In base allo standard di linguaggio Java, il secondo punto e virgola è empty statement.

An empty statement does nothing.

EmptyStatement: 
    ; 

Execution of an empty statement always completes normally.

+2

+1 per referenziare JLS –

0

Perché non è errore? Perché stai chiedendo di java? Questo è nella maggior parte delle lingue con sintassi simile ...

14

Come detto da altre risposte, in genere il secondo punto e virgola viene interpretato come un'istruzione vuota, che è consentita ovunque sia consentita un'istruzione.

realtà, ci sono casi in cui un doppio punto e virgola non produce un errore:

public int method() { 
    return 1;; 
} 

Quando il compilatore determina che una posizione non è raggiungibile (e questo è definito esattamente in JLS, ma include direttamente le posizioni dopo un return, break, continue e throw), non è consentita nessuna istruzione, nemmeno una vuota.

Problemi correlati