
En el lenguaje de programación Java , una palabra clave es cualquiera de las 68 palabras reservadas [ 1 ] que tienen un significado predefinido en el lenguaje. Debido a esto, los programadores no pueden usar palabras clave en algunos contextos, como nombres de variables , métodos , clases o como cualquier otro identificador . [ 2 ] De estas 68 palabras clave, 17 de ellas están reservadas solo contextualmente y, a diferencia de las palabras reservadas estándar, a veces pueden usarse como identificador. Debido a sus funciones especiales en el lenguaje, la mayoría de los entornos de desarrollo integrados para Java utilizan resaltado de sintaxis para mostrar las palabras clave en un color diferente para facilitar su identificación.
Palabras clave reservadas
Las siguientes palabras son palabras clave reservadas y no pueden utilizarse como identificadores bajo ninguna circunstancia.
abstract- Un método sin definición debe declararse como abstracto, y la clase que lo contiene también debe declararse como abstracta. Las clases abstractas no pueden instanciarse. Los métodos abstractos deben implementarse en las subclases. La palabra clave `abstract` no se puede usar con variables ni constructores. Cabe destacar que una clase abstracta no está obligada a tener ningún método abstracto.
assert(añadido en J2SE 1.4 ) [ 3 ]- Una aserción describe un predicado (una declaración booleana) que se coloca en un programa Java para indicar que el desarrollador considera que el predicado siempre es verdadero en ese punto. Si una aserción se evalúa como falsa en tiempo de ejecución, se produce un fallo de aserción, lo que normalmente provoca la interrupción de la ejecución. Las aserciones están deshabilitadas en tiempo de ejecución por defecto, pero se pueden habilitar mediante una opción de línea de comandos o programáticamente a través de un método en el cargador de clases.
boolean- Define una variable booleana para los valores "verdadero" o "falso" solamente. Por defecto, el valor del tipo primitivo booleano es falso. Esta palabra clave también se utiliza para declarar que un método devuelve un valor del tipo primitivo
boolean. En la mayoría de los demás lenguajes, el tipo booleano generalmente se llama simplementebool.
break- Se utiliza para finalizar la ejecución en el cuerpo del bucle actual.
- Se utiliza para salir de un
switchbloqueo.
byte- La
bytepalabra clave se utiliza para declarar un campo que puede contener un entero con signo de 8 bits en complemento a dos . [ 4 ] [ 5 ] Esta palabra clave también se utiliza para declarar que un método devuelve un valor del tipo primitivobyte. [ 6 ] [ 7 ]
case- Una instrucción en el
switchbloque puede estar etiquetada con una o máscaseetiquetasdefault. Laswitchinstrucción evalúa su expresión y luego ejecuta todas las instrucciones que siguen a lacaseetiqueta coincidente; véaseswitch. [ 8 ] [ 9 ]
catch- Se utiliza junto con un
trybloque y unfinallybloque opcional. Las instrucciones delcatchbloque especifican qué hacer si se produce un tipo específico de excepcióntry.
char- Define una variable de tipo carácter capaz de almacenar cualquier carácter del conjunto de caracteres del archivo fuente Java.
class- Un tipo que define la implementación de un tipo particular de objeto. Una definición de clase define campos de instancia y de clase , métodos y clases internas , además de especificar las interfaces que implementa la clase y la superclase inmediata de la clase. Si la superclase no se especifica explícitamente, se asume implícitamente . La palabra clave `class` también se puede usar en la forma para obtener un objeto sin necesidad de una instancia de esa clase. Por ejemplo, se puede usar en lugar de hacer .
ObjectClass.classClassString.classnewString().getClass()
continue- Se utiliza para reanudar la ejecución del programa al final del cuerpo del bucle actual. Si va seguido de una etiqueta,
continuereanuda la ejecución al final del cuerpo del bucle etiquetado que lo contiene.
default- La
defaultpalabra clave puede usarse opcionalmente en una instrucción switch para etiquetar un bloque de instrucciones que se ejecutarán si nocasecoincide con el valor especificado; verswitch. [ 8 ] [ 9 ] Alternativamente, ladefaultpalabra clave también puede usarse para declarar valores predeterminados en una anotación Java . A partir de Java 8, ladefaultpalabra clave puede usarse para permitir que una interfaz proporcione una implementación de un método.
do- La
dopalabra clave se usa junto conwhilepara crear un bucle do-while , que ejecuta un bloque de instrucciones asociado con el bucle y luego prueba una expresión booleana asociada conwhile. Si la expresión se evalúa comotrue, el bloque se ejecuta de nuevo; esto continúa hasta que la expresión se evalúa comofalse. [ 10 ] [ 11 ]
double- La palabra clave se utiliza para declarar una variable que puede almacenar un número de punto flotante IEEE 754 de doble precisión
doublede 64 bits . [ 4 ] [ 5 ] Esta palabra clave también se utiliza para declarar que un método devuelve un valor del tipo primitivo . [ 6 ] [ 7 ]double
else- La
elsepalabra clave se utiliza junto conifpara crear una instrucción if-else , que prueba una expresión booleana ; si la expresión se evalúa como verdadera , se evalúatrueel bloque de instrucciones asociado con la expresión; si se evalúa como falsa , se evalúa el bloque de instrucciones asociado con la expresión . [ 12 ] [ 13 ]iffalseelse
enum(añadido en J2SE 5.0 ) [ 3 ]- Una palabra clave de Java que se utiliza para declarar un tipo enumerado . Las enumeraciones extienden la clase base
Enum.
extends- Se utiliza en la declaración de una clase para especificar la superclase; en la declaración de una interfaz, para especificar una o más superinterfaces. La clase X extiende la clase Y para añadir funcionalidad, ya sea añadiendo campos o métodos a la clase Y, o sobrescribiendo métodos de la clase Y. Una interfaz Z extiende una o más interfaces añadiendo métodos. Se dice que la clase X es una subclase de la clase Y; se dice que la interfaz Z es una subinterfaz de las interfaces que extiende.
- También se utiliza para especificar un límite superior en un parámetro de tipo en Generics.
final- Define una entidad una sola vez que no se puede cambiar ni derivar posteriormente. Más específicamente: una clase final no puede ser subclaseada, un método final no puede ser sobrescrito y una variable final puede aparecer como máximo una vez como expresión izquierda en un comando ejecutado. Todos los métodos en una clase final son implícitamente
final.
finally- Se utiliza para definir un bloque de instrucciones para un bloque definido previamente por la
trypalabra clave. Elfinallybloque se ejecuta después de que la ejecución sale deltrybloque y de cualquiercatchcláusula asociada, independientemente de si se lanzó o capturó una excepción, o si la ejecución salió del método en medio de los bloquestryocatchusando lareturnpalabra clave.
float- La palabra clave se utiliza para declarar una variable que puede almacenar un número de punto flotante IEEE 754 de precisión simple
floatde 32 bits . [ 4 ] [ 5 ] Esta palabra clave también se utiliza para declarar que un método devuelve un valor del tipo primitivo . [ 6 ] [ 7 ]float
for- La
forpalabra clave se utiliza para crear un bucle `for` , que especifica la inicialización de una variable, una expresión booleana y un incremento. Primero se realiza la inicialización de la variable y luego se evalúa la expresión booleana. Si la expresión se evalúa como verdaderatrue, se ejecuta el bloque de instrucciones asociado al bucle y luego se realiza el incremento. A continuación, se vuelve a evaluar la expresión booleana; esto continúa hasta que la expresión se evalúa como verdaderafalse. [ 14 ]
- A partir de J2SE 5.0 , la
forpalabra clave también se puede usar para crear un llamado " bucle for mejorado " [ 15 ] , que especifica una matriz uIterableobjeto; cada iteración del bucle ejecuta el bloque de instrucciones asociado usando un elemento diferente en la matriz oIterable. [ 14 ]
if- La
ifpalabra clave se utiliza para crear una sentencia if , que evalúa una expresión booleana ; si la expresión se evalúa como verdaderatrue, se ejecuta el bloque de sentencias asociado a la sentencia if. Esta palabra clave también se puede utilizar para crear una sentencia if-else ; véaseelse. [ 12 ] [ 13 ]
implements- Se incluye en la declaración de una clase para especificar una o más interfaces que implementa la clase actual. Una clase hereda los tipos y métodos abstractos declarados por las interfaces.
import- Se utiliza al principio de un archivo fuente para especificar clases o paquetes Java completos a los que se hará referencia posteriormente sin incluir sus nombres de paquete en la referencia. Desde J2SE 5.0,
importlas instrucciones pueden importarstaticmiembros de una clase. Un módulo Java puede importarse a sí mismo (escribiendoimport module), importando automáticamente todos los paquetes exportados. [ 16 ]
instanceof- Operador binario que toma una referencia a un objeto como primer operando y una clase o interfaz como segundo operando, y produce un resultado booleano. El
instanceofoperador se evalúa como verdadero si y solo si el tipo en tiempo de ejecución del objeto es compatible con la asignación de la clase o interfaz.
int- La
intpalabra clave se utiliza para declarar una variable que puede almacenar un entero con signo de 32 bits en complemento a dos. [ 4 ] [ 5 ] Esta palabra clave también se utiliza para declarar que un método devuelve un valor del tipo primitivoint. [ 6 ] [ 7 ]
interface- Se utiliza para declarar una interfaz
static finalque solo contiene métodos abstractos o predeterminados, campos constantes estaticinterfaces. Posteriormente, puede ser implementada por clases que declaren la interfaz con laimplementspalabra clave. Dado que la herencia múltiple no está permitida en Java, las interfaces se utilizan para sortear esta restricción. Una interfaz puede definirse dentro de otra interfaz.
long- La
longpalabra clave se utiliza para declarar una variable que puede almacenar un entero con signo de 64 bits en complemento a dos. [ 4 ] [ 5 ] Esta palabra clave también se utiliza para declarar que un método devuelve un valor del tipo primitivolong. [ 6 ] [ 7 ]
native- Se utiliza en las declaraciones de métodos para especificar que el método no está implementado en el mismo archivo fuente de Java, sino en otro lenguaje. [ 7 ]
new- Se utiliza para crear una instancia de una clase o un objeto de matriz. El uso de la palabra clave para este fin no es completamente necesario (como lo ejemplifica Scala ), aunque cumple dos propósitos: permite la existencia de diferentes espacios de nombres para métodos y nombres de clases, define de forma estática y local que se ha creado un nuevo objeto y de qué tipo en tiempo de ejecución es (lo que podría considerarse una introducción de dependencia en el código).
package- Un paquete Java es un grupo de clases e interfaces similares. Los paquetes se declaran con la
packagepalabra clave.
private- La
privatepalabra clave se utiliza en la declaración de un método, campo o clase interna; los miembros privados solo pueden ser accedidos por otros miembros de su propia clase. [ 17 ]
protected- La
protectedpalabra clave se utiliza en la declaración de un método, campo o clase interna; los miembros protegidos solo pueden ser accedidos por miembros de su propia clase, subclases de esa clase o clases del mismo paquete . [ 17 ]
public- La
publicpalabra clave se utiliza en la declaración de una clase, método o campo; las clases, métodos y campos públicos pueden ser accedidos por los miembros de cualquier clase. [ 17 ]
return- Se utiliza para finalizar la ejecución de un método. Puede ir seguido de un valor requerido por la definición del método, que se devuelve a quien lo llama.
short- La
shortpalabra clave se utiliza para declarar un campo que puede contener un entero con signo de 16 bits en complemento a dos. [ 4 ] [ 5 ] Esta palabra clave también se utiliza para declarar que un método devuelve un valor del tipo primitivoshort. [ 6 ] [ 7 ]
static- Se utiliza para declarar un campo, método o clase interna como un campo de clase. Las clases mantienen una copia de los campos de clase, independientemente de cuántas instancias existan de esa clase.
staticTambién se utiliza para definir un método como un método de clase. Los métodos de clase están vinculados a la clase en lugar de a una instancia específica, y solo pueden operar sobre campos de clase. Las clases e interfaces declaradas comostaticmiembros de otra clase o interfaz son, en términos de comportamiento, clases de nivel superior. [ 18 ]
super- La herencia se utiliza principalmente para lograr el enlace dinámico o el polimorfismo en tiempo de ejecución en Java. Permite acceder a los miembros de una clase heredada por la clase en la que aparece. Permite que una subclase acceda a los métodos sobrescritos y a los miembros ocultos de su superclase. La
superpalabra clave también se utiliza para reenviar una llamada desde un constructor a un constructor de la superclase. - También se utiliza para especificar un límite inferior en un parámetro de tipo en Generics.
switch- La
switchpalabra clave se utiliza junto concaseydefaultpara crear una instrucción switch , que evalúa una variable, compara su valor con un específicocase(incluidos patrones ) y ejecuta el bloque de instrucciones asociado con esecase. Si nocasecoincide con el valor, se ejecuta el bloque opcional etiquetado pordefault, si está incluido. [ 8 ] [ 9 ] La palabra clave switch también se puede utilizar con la palabra clave no reservadayieldpara crear expresiones switch.
synchronized- Se utiliza en la declaración de un método o bloque de código para adquirir el bloqueo mutex para un objeto mientras el hilo actual ejecuta el código. [ 7 ] Para métodos estáticos, el objeto bloqueado es el de la clase
Class. Garantiza que como máximo un hilo a la vez que opere en el mismo objeto ejecute ese código. El bloqueo mutex se libera automáticamente cuando la ejecución sale del código sincronizado. Los campos, las clases y las interfaces no se pueden declarar como sincronizados .
this- Se utiliza para representar una instancia de la clase en la que aparece.
thisPuede usarse para acceder a los miembros de la clase y como referencia a la instancia actual. Lathispalabra clave también se usa para reenviar una llamada de un constructor de una clase a otro constructor de la misma clase.
throw- Provoca que se lance la instancia de excepción declarada. Esto hace que la ejecución continúe con el primer manejador de excepciones que la contiene, declarado mediante la
catchpalabra clave, para manejar un tipo de excepción compatible con la asignación. Si no se encuentra dicho manejador de excepciones en el método actual, este regresa y el proceso se repite en el método que lo llamó. Si no se encuentra ningún manejador de excepciones en ninguna llamada a método en la pila, la excepción se pasa al manejador de excepciones no capturadas del hilo.
throws- Se utiliza en las declaraciones de métodos para especificar qué excepciones no se manejan dentro del método, sino que se pasan al siguiente nivel superior del programa. Todas las excepciones verificadas no capturadas en un método (extiende
Exceptionpero noRuntimeException) deben declararse utilizando lathrowspalabra clave.
transient- Declara que un campo de instancia no forma parte de la forma serializada predeterminada de un objeto. Cuando un objeto se serializa, solo los valores de sus campos de instancia no transitorios se incluyen en la representación serial predeterminada. Cuando un objeto se deserializa, los campos transitorios se inicializan solo con su valor predeterminado. Si no se utiliza la forma predeterminada, por ejemplo, cuando se declara una tabla serialPersistentFields
transienten la jerarquía de clases, se ignoran todas las palabras clave. [ 19 ] [ 20 ]
try- Define un bloque de instrucciones que maneja excepciones. Si se produce una excepción dentro del
trybloque, uncatchbloque opcional puede manejar los tipos de excepción declarados. Tambiénfinallyse puede declarar un bloque opcional que se ejecutará cuando la ejecución salga deltrybloque ycatchlas cláusulas, independientemente de si se produce una excepción o no. Untrybloque debe tener al menos unacatchcláusula o unfinallybloque.
volatile- Se utiliza en las declaraciones de campo para garantizar la visibilidad de los cambios en las variables entre subprocesos. Cada lectura de una variable volátil se leerá desde la memoria principal, y no desde la caché de la CPU , y cada escritura en una variable volátil se escribirá en la memoria principal, y no solo en la caché de la CPU. [ 21 ] Por lo tanto, los métodos, las clases y las interfaces no pueden declararse como volátiles , ni tampoco las variables o parámetros locales.
while- La
whilepalabra clave se utiliza para crear un bucle while , que evalúa una expresión booleana y ejecuta el bloque de instrucciones asociado al bucle si la expresión se evalúa como verdaderatrue; esto continúa hasta que la expresión se evalúa como falsafalse. Esta palabra clave también se puede utilizar para crear un bucle do-while ; véasedo. [ 10 ] [ 11 ]
No usado
Las siguientes palabras están reservadas como palabras clave, pero actualmente no tienen ningún uso ni propósito.
_- Añadido en Java 9, el guion bajo se ha convertido en una palabra clave y ya no se puede utilizar como nombre de variable. [ 22 ]
const- Aunque está reservada como palabra clave en Java,
constno se usa y no tiene ninguna función. [ 2 ] [ 23 ] En otros lenguajes,constse usa normalmente para definir constantes. Para definir constantes en Java, consulte lafinalpalabra clave.
goto- Aunque está reservada como palabra clave en Java,
gotono se usa y no tiene ninguna función. [ 2 ] [ 23 ] En otros lenguajes,gotose usa típicamente como una instrucción de control unidireccional para saltar a una etiqueta en otra línea de código.
strictfp(añadido en J2SE 1.2 ) [ 3 ]- Aunque reservada como palabra clave en Java,
strictfpestá obsoleta y ya no tiene ninguna función. [ 24 ] Anteriormente, esta palabra clave se utilizaba para restringir la precisión y el redondeo de los cálculos de punto flotante para garantizar la portabilidad. [ 7 ]
Palabras clave contextuales
Los siguientes identificadores son palabras clave contextuales y solo están restringidos en algunos contextos:
exports- Se utiliza en la declaración de un módulo para especificar qué paquetes están disponibles para otros módulos.
module- Declara un módulo (una colección de paquetes y recursos relacionados que pueden tratarse como una unidad), utilizado para encapsular y exponer únicamente la API pública de una biblioteca.
non-sealed- Se utiliza para declarar que una clase o interfaz que extiende una clase sellada puede ser extendida por clases desconocidas. [ 25 ]
open- Indica que todas las clases de un paquete son accesibles mediante reflexión por otros módulos.
opens- Se utiliza para abrir un paquete específico para que otros módulos puedan reflejarlo.
permits- La cláusula de permisos especifica las clases que tienen permiso para extender una clase sellada. [ 25 ]
provides- Se utiliza para declarar que un módulo proporciona una implementación de una interfaz de servicio.
record- Un tipo especial de clase que actúa como un portador transparente de datos inmutables, proporcionando automáticamente los métodos
.equals(),.hashCode(), y.toString().
requires- Se utiliza en la declaración de un módulo para especificar que dicho módulo depende de otro módulo.
sealed- Una clase o interfaz sellada solo puede ser extendida o implementada por clases e interfaces autorizadas para hacerlo. [ 25 ]
to- Se utiliza con la
opensdirectiva para especificar qué módulo tiene permiso para acceder al paquete de forma reflectiva.
transitive- Se utiliza con la
requiresdirectiva para indicar que un módulo no solo requiere otro módulo, sino que también pone las dependencias de ese módulo a disposición de los módulos que dependen de él.
uses- Se utiliza en un módulo para declarar que el módulo está utilizando un servicio (es decir, consumirá un servicio proporcionado por otros módulos).
var- Un identificador especial que no se puede usar como nombre de tipo (desde Java 10). [ 26 ] Se usa para declarar una variable sin especificar explícitamente el tipo, confiando en que el compilador infiera el tipo a partir del inicializador.
when- Se utiliza como una verificación adicional para una
casedeclaración. [ 27 ]
with- Se utiliza con la
providesdirectiva para especificar qué implementación de un servicio proporciona el módulo.
yield- Se utiliza para establecer un valor para una expresión switch, cuando se utilizan grupos de instrucciones etiquetadas (por ejemplo,
case L:). [ 28 ]
Palabras reservadas para valores literales
Las siguientes palabras se refieren a valores literales utilizados por el idioma.
true- Un valor literal booleano.
false- Un valor literal booleano.
null- Un valor literal de referencia.
Véase también
Referencias
- ↑ "Referencia de la API de Java de la plataforma Java, edición estándar" .
- 1 2 3 "Especificación del lenguaje Java - Sección 3.9: Palabras clave" . La especificación del lenguaje Java . Oracle . 21 de agosto de 2018. Recuperado el 25 de diciembre de 2018 .
- 1 2 3 "Palabras clave del lenguaje Java" . Los tutoriales de Java . Sun Microsystems, Inc. Recuperado el 24 de julio de 2017 .
- 1 2 3 4 5 6 "Tipos de datos primitivos" . Los tutoriales de Java . Sun Microsystems, Inc. 14 de febrero de 2008. Recuperado el 3 de diciembre de 2008 .
- 1 2 3 4 5 6 Flanagan 2005 , pág. 22.
- 1 2 3 4 5 6 7 "Devolver un valor desde un método" . Los tutoriales de Java . Sun Microsystems, Inc. 14 de febrero de 2008. Recuperado el 3 de diciembre de 2008 .
- 1 2 3 4 5 6 7 8 9 Flanagan 2005 , págs. 66–67.
- 1 2 3 "La instrucción switch" . Los tutoriales de Java . Sun Microsystems, Inc. 14 de febrero de 2008. Consultado el 18 de diciembre de 2014 .
- 1 2 3 Flanagan 2005 , págs. 46–48.
- 1 2 "Las sentencias while y do-while" . Los tutoriales de Java . Sun Microsystems, Inc. 14 de febrero de 2008. Consultado el 3 de diciembre de 2008 .
- 1 2 Flanagan 2005 , págs. 48–49.
- 1 2 "Las sentencias if-then e if-then-else" . Los tutoriales de Java . Sun Microsystems, Inc. 14 de febrero de 2008. Consultado el 3 de diciembre de 2008 .
- 1 2 Flanagan 2005 , págs. 44–46.
- 1 2 "La instrucción for" . Los tutoriales de Java . Sun Microsystems, Inc. 14 de febrero de 2008. Recuperado el 3 de diciembre de 2008 .
- ↑ Flanagan 2005 , págs. 50–54.
- ↑ "JEP 494: Declaraciones de importación de módulos (Segunda vista previa)" . openjdk.org .
- 1 2 3 "Controlar el acceso a los miembros de una clase" . Los tutoriales de Java . Sun Microsystems, Inc. 14 de febrero de 2008. Recuperado el 3 de diciembre de 2008 .
- ↑ "Clases anidadas (Tutoriales de Java™ > Aprendiendo el lenguaje Java > Clases y objetos)" .
- ↑ "Especificación de serialización de objetos Java versión 1.5.0" . Sun/Oracle. 2004. 1.5 Definición de campos serializables para una clase. Archivado del original el 12 de diciembre de 2019. Consultado el 16 de septiembre de 2010 .
- ↑ Grosso, William (21 de noviembre de 2001). "Java RMI: Serialización" . ONJava . O'Reilly Media. Declaración de serialPersistentFields . Recuperado el 16 de septiembre de 2010 .
- ↑ "Palabra clave volátil de Java" .
- ↑ "Tratamiento de los guiones bajos" . JEP 302: Restos de Lambda .
- 1 2 Flanagan 2005 , pág. 20.
- ↑ "JEP 306: Restaurar la semántica de punto flotante siempre estricta" .
- 1 2 3 "Clases selladas" . docs.oracle.com . Oracle Corporation . Consultado el 7 de agosto de 2021 .
- ↑ "Capítulo 3. Estructura léxica" . docs.oracle.com . Consultado el 25 de diciembre de 2018 .
- ↑ "Capítulo 14. Bloques, sentencias y patrones" .
- ↑ "Expresiones Switch" . docs.oracle.com . Oracle Corporation . Consultado el 27 de diciembre de 2020 .
Enlaces externos
- Gosling, James ; Joy, Bill ; Steele, Guy ; Bracha, Gilad (junio de 2005). Especificación del lenguaje Java (tercera edición). Addison-Wesley Professional. ISBN 978-0-321-24678-3. Consultado el 3 de diciembre de 2008 .
- Flanagan, David (marzo de 2005). Java en pocas palabras (quinta ed.). O'Reilly Media . ISBN 978-0-596-00773-7. Consultado el 3 de marzo de 2010 .
- Java (lenguaje de programación)
- sintaxis del lenguaje de programación