2012-03-03 27 views
8

Accidentalmente escribí una declaración de java con dos puntos y comas al final. El compilador de Java no muestra ningún error y se ejecuta.¿Por qué Java no muestra un error para punto y coma doble al final de una instrucción?

Código:

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

con fines de aprendizaje He intentado añadir diferentes caracteres después del punto y coma, y ​​el compilador Java ha demostrado el error de tiempo de compilación como Error de sintaxis en el token ")", eliminar este token.

Esta afirmación:

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

¿Por qué tratar de Java el punto y coma y otros personajes tan diferentes?

Respuesta

28

Porque un punto y coma doble no se trata como un punto y coma doble sino como un punto y coma más una instrucción vacía. Y una declaración vacía, que no hace nada, no es un error.

+3

+1, Exactamente, es muy parecido a escribir '{} {} {} {} (llaves quiero decir)' dentro de su código en cualquier lugar. –

+1

Gracias borré ahora. Creo que algunos puntos relacionados como su respuesta es que utilizamos punto y coma para finalizar la afirmación. Pero no sabía que el segundo punto y coma es un operador vacío. –

+2

En realidad, es una ** declaración ** vacía. No hay nada como una expresión vacía en Java. –

1

; por sí solo es un operador vacío, por lo que efectivamente tiene dos operadores en el caso original.

+0

Gracias borré ahora.Creo que algunos puntos relacionados como su respuesta es que utilizamos punto y coma para finalizar la afirmación. Pero no sabía que el segundo punto y coma es un operador vacío. –

+0

+1, para esta información. –

1

El punto y coma finaliza la oración.

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

El segundo punto y coma significa que la oración está vacía.

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

Es incorrecto porque intenta terminar una oración incompleta.

10

De acuerdo con el estándar de lenguaje Java, el segundo punto y coma es un empty statement.

An empty statement does nothing.

EmptyStatement: 
    ; 

Execution of an empty statement always completes normally.

+2

+1 para hacer referencia al JLS –

0

Debido a que no es el error? ¿Por qué preguntas sobre Java? Esto es en la mayoría de los lenguajes con sintaxis similar ...

14

Según lo expresado en otras respuestas, generalmente el segundo punto y coma se interpreta como una declaración vacía, que está permitida siempre que se permita una declaración.

En realidad, hay casos en los que un doble punto y coma sí produce un error:

public int method() { 
    return 1;; 
} 

Cuando el compilador determina que un lugar no es accesible (y esto se define exactamente en el JLS, sino que incluye las ubicaciones directamente después de return, break, continue y throw), no se permite ninguna declaración, ni siquiera una vacía.

Cuestiones relacionadas