He leído que todas las sentencias Java terminan con un punto y coma. Pero también me he dado cuenta muchas veces en el Internet que
public static void main
que se ha llamado una declaración a pesar de que no tiene un punto y coma. Por lo tanto, no es un término definido para la declaración? ¿Hay alguna diferencia entre la declaración y la instrucción en Java?
He leído que todas las sentencias Java terminan con un punto y coma.
Eso es incorrecto. Las siguientes declaraciones de Java no necesitan terminar con un punto y coma:
if
declaraciones- algunas sentencias de bucle (
for
,while
) synchronized
declaracionestry
declaraciones- bloquear las declaraciones; es decir
{ ... }
Lo que estos todos tienen en común es que terminan en un comunicado la filial que puede ser un bloque o no; p.ej
if (a) this.b();
versus
if (a) { this.b(); }
Pero también me he dado cuenta muchas veces en internet que
public static void main
se ha llamado una declaración a pesar de que no tiene un punto y coma.
Eso no es una declaración. Es una parte de una declaración. (A declaración de método.)
Por lo tanto, no es un término definido para la declaración?
La especificación del lenguaje Java dice lo siguiente:
"La secuencia de la ejecución de un programa es controlado por los estados, los cuales son ejecutados por su efecto y no tienen valores."
Así que desde que podemos extraer la siguiente definición amplia: Una declaración es una construcción del lenguaje Java que es ejecutable, se ejecuta por su efecto, y no tiene un valor de 1 .
Sin embargo, creo que la mejor manera de ver la diferencia entre una declaración y un no-declaración en Java es la lista de los diferentes tipos de declaraciones.
- Comenzar con la lista anterior.
- Agregue la siguiente:
- declaraciones de variables locales (con o sin inicializadores)
- las llamadas a métodos, referencias de métodos y lambdas
new
declaraciones- instrucciones de asignación
- prefijo / postfix incremento y decremento expresiones
do
...while
declaraciones.continue
ybreak
declaracionesthrow
declaracionesreturn
declaraciones- declaraciones vacías; por ejemplo, el segundo
;
ena = b; ;
No-declaraciones (declaraciones) son los siguientes:
- Una
class
declaración - una
interface
declaración - una
enum
declaración - Una declaración de campo
- Una declaración de método
- Una declaración del constructor
- Una
package
declaración - una
import
declaración - Una
module
declaración - Un bloque de inicialización.
(Algunas personas llaman package
, import
y module
declaraciones "declaraciones", pero eso no es lo que el JLS los llama, y que no se ajusta a la definición anterior.)
¿Hay alguna diferencia entre la declaración y la instrucción en Java?
El término "instrucción" no tiene ningún significado técnico en Java. Sin embargo, una declaración de Java es una forma de instrucción para el programa para hacer algo.
1 - El "no tiene un valor" es un poco de un tramo. Por ejemplo, tal declaración un i++;
sí produce un valor ... pero estamos haciendo caso omiso de ella. Sin embargo, lo anterior es una cita directa de los JLS, aunque que es descriptivo más que un intento serio para definir la "declaración".