Você conhece todas as palavras reservadas do Java?



Este post na vigésima-quinta semana do ano de 2020 marca o primeiro da série “25 JavaBeans Series”, uma série que vai tratar de 25 pontos relacionados a plataforma Java em comemoração aos seus 25 anos!
Então a pergunta de hoje é: você conhece todas as palavras reservadas do Java?
As palavras reservadas são utilizadas para que o compilador execute algum comando quando as identifica. Vamos vê-las:
1 - abstract
Um método sem definição deve ser declarado como abstrato(abstract
) e a classe que o contém também deve ser declarada como abstrata. Classes abstratas não podem ser instanciadas e os métodos abstratos devem ser implementados nas subclasses. Outro detalhe é que uma classe abstrata não obrigatoriamente tem um método abstrato, mas um método abstrato só pode estar numa classe abstrata.
2 - assert
O assert
descreve um predicado(uma declaração de verdadeiro ou falso) colocado em uma aplicação Java para indicar se o valor passado para o predicado é verdadeiro ou falso. Se a asserção for avaliada como falsa em tempo de execução, ocorrerá uma falha de asserção.
3 - boolean
Define uma variável booleana apenas para os valores “true” ou “false”. Por padrão, o valor do tipo primitivo booleano é falso. Essa palavra chave também é usada para declarar que um método retorna um valor do tipo primitivo booleano.
4 - break
Usado para finalizar a execução no corpo do loop atual.
5 - byte
A palavra chave byte
é usada para declarar um campo que pode conter um número inteiro de complemento de dois assinado de 8 bits. Essa palavra chave também é usada para declarar que um método retorna um valor do tipo primitivo byte
.
6 - case
Um bloco switch pode ser identificado com um ou mais “case” ou com um identificador “default”. A instrução switch avalia sua expressão e, em seguida executa todas as instruções que seguem o identificador “case” correspondente.
7 - catch
Utilizado em conjunto com um bloco “try” e em um bloco opcional “finally”. As instruções no bloco “catch” especificam o que fazer se um tipo específico de exceção for lançado pelo bloco “try”.
8 - char
Define uma variável de caractere capaz de conter qualquer caractere do conjunto de caracteres suportados pelo Java.
9 - class
Uma palavra que define a implementação de um tipo específico de objeto. Uma definição de classe define variáveis de classe e de instância, métodos e classes internas, além de especificar as interfaces que a classe implementa e a superclasse imediata da classe. Se a superclasse não for especificada explicitamente, a superclasse é implicitamente Object. A palavra chave class
também pode ser usada no formato Class.class
para obter um objeto Class
sem precisar de uma instância dessa classe. Por exemplo, String.class
pode ser usado em vez de fazer new String().getClass();
.
10 - const
Não utilizado, porém é reservada.
11 - continue
Usado para retomar a execução do programa no final do corpo do loop atual. Se seguido por um identificador continue
, retoma a execução no final do corpo do loop identificado.
12 - default
A palavra chave default
pode opcionalmente ser usada em uma instrução switch
para identificar um bloco de instruções a ser executado se nenhum caso corresponder ao valor especificado. Como alternativa, a palavra chave default
também pode ser usada para declarar valores padrão em uma anotação Java. A partir do Java 8, palavra chave default
pode ser usada para permitir que uma interface forneça uma implementação de um método.
13 - do
A palavra chave do
é usada em conjunto com o while
para criar um loop do-while
, que executa um bloco de instruções associadas ao loop e testa uma expressão booleana associada ao while
. Se a expressão for avaliada como verdadeira, o bloco será executado novamente, isso continua até que a expressão seja avaliada como falsa.
14 - double
A palavra chave double
é usada para declarar uma variável que pode conter um número de ponto flutuante IEEE 754 de precisão dupla de 64 bits. Essa palavra chave também é usada para declarar que um método retorna um valor do tipo primitivo double
.
15 - else
A palavra chave else
é usada em conjunto com if
para criar uma instrução if-else
, que testa uma expressão booleana, se a expressão for avaliada como verdadeira, o bloco de instruções associado ao if
será avaliada, se avaliado como falso, o bloco de instruções associado ao else
é avaliado.
16 - enum
A palavra chave enum
é usada para declarar um tipo enumerado. Enumerações estendem a classe base Enum
.
17 - extends
Usado em uma declaração de classe para especificar a superclasse, usado em uma declaração de interface para especificar uma ou mais superinterfaces. A classe X estende a classe Y para adicionar funcionalidade, adicionando campos ou métodos a classe Y ou substituindo métodos da classe Y. Uma interface Z estende uma ou mais interfaces adicionando métodos. A classe X é considerada uma subclasse da classe Y. A interface Z é considerada uma subinterface das interfaces que ela se estende. Também usado para especificar um limite superior em um parâmetro de tipo em Generics
.
18 - final
Define uma entidade uma vez que não possa ser alterada nem derivada posteriormente. Mais especificamente: uma classe final não pode ser subclassificada, um método final não pode ser substituido e uma variável final pode ocorrer no máximo uma vez como uma expressão left-hand
em um comando executado. Todos os métodos em uma classe final são implicitamente finais.
19 - finally
Usado para definir um bloco de instruções para um bloco definido anteriormente pela palavra chave try
. O bloco finally
é executado após a execução sair do bloco try
e de qualquer cláusula catch
associada, independentemente de uma execução ter sido lançada ou capturada ou se a execução parou no meio dos blocos try
ou catch
usando a palavra chave return
20 - float
A palavra chave float
é usada para declarar uma variável que pode conter um número de ponto flutuante IEEE 754 de precisão única de 32 bits. Essa palavra chave também é usada para declarar que um método retorna um valor do tipo primitivo float
.
21 - for
A palavra chave for
é usada para criar um loop for
, que especifica uma inicialização de variável, uma expressão booleana e um incremento. A inicialização da variável é realizada primeiro e, em seguida, a expressão booleana é avaliada. Se a expressão for avaliada como verdadeira, o bloco de instruções associado ao loop será executado. A expressão booleana é então avaliada novamente, isso continua até que a expressão seja avaliada como falsa. A partir do J2SE 5.0, a palavra chave for
também pode ser usada para criar o chamado “enhanced for loop” que especifica uma matriz ou objeto iterável, cada iteração do loop executa o bloco de instruções associado usando um elemento diferente na matriz ou Iterable
.
22 - goto
Não utilizada, porém reservado.
23 - if
A palavra chave if
é usada para criar uma instrução if
, que testa uma expressão booleana, se a expressão for avaliada como verdadeira, o bloco de instruções associado a instrução if
será executado. Essa palavra chave também pode ser usada para criar uma instrução if-else
.
24 - implements
Incluído em uma declaração de classe para especificar uma ou mais interfaces implementadas pela classe atual. Uma classe herda os tipos e métodos abstratos declarados pelas interfaces.
25 - import
Usado no inicio de um arquivo de código-fonte para especificar classes ou pacotes Java inteiros a serem consultados posteriormente, sem incluir seus nomes de pacotes na referência. Desde o J2SE 5.0, as instruções de importação podem importar membros estáticos de uma classe.
26 - instanceof
Um operador binário que recebe uma referência de objeto como seu primeiro operando e uma classe ou interface como seu segundo operando e produz um resultado booleano. O operador instanceof
avalia como true
se e somente se o tipo de tempo de execução do objeto é uma atribuição compatível com a classe ou interface.
27 - int
A palavra chave int
é usada para declarar uma variável que pode conter um inteiro de complemento de dois de 32 bits. Essa palavra chave também é usada para declarar que um método retorna um valor do tipo primitivo int
.
28 - interface
Usado para declarar um tipo especial de classe que contém apenas métodos abstratos ou padrão, campos constantes(estáticos, finais) e interfaces estáticas. Posteriormente, ele pode ser implementado por classes que declaram a interface com a palavra chave implements
. Como a herança múltipla não é permitida em Java, as interfaces são usadas para contorná-la. Uma interface pode ser definida dentro de outra interface.
29 - long
A palavra chave long
é usada para declarar uma variável que pode conter um inteiro de complemento de dois assinados de 64 bits. Essa palavra chave também é usada para declarar que um método retorna um valor do tipo primitivo por muito tempo.
30 - native
Usado nas declarações do método para especificar que o método não é implementado no mesmo arquivo de código Java, mas em outra linguagem.
31 - new
Usado para criar uma instância de um objeto de classe ou matriz. O uso da palavra chave para esse fim não é completamente necessário(como exemplificado pelo Scala), embora atenda a dois propósitos: permite a existência de um espaço de nome diferente para métodos e nomes de classes, define estaticamente e localmente que um objeto novo é realmente criado e que tipo de runtime é.
32 - package
Um pacote Java é um grupo de classes e interfaces semelhantes. Pacotes são declarados com a palavra chave package
.
33 - private
A palavra chave private
é usada na declaração de um método, campo ou classe interna, membros privados só podem ser acessados por outros membros de sua própria classe.
34 - protected
A palavra chave protected
é usada na declaração de um método, campo ou classe interna, membros protegidos só podem ser acessados por membros de sua própria classe, subclasses ou classes dessa classe do mesmo pacote.
35 - public
A palavra chave public
é usada na declaração de uma classe, método ou campo, classes públicas, métodos e campos podem ser acessados pelos membros de qualquer classe.
36 - return
Usado para concluir a execução de um método. Pode ser seguido por um valor exigido pela definição do método que é retornada ao chamador.
37 - short
A palavra chave short
é usada para declarar um campo que pode conter um número inteiro de complemento de dois de 16 bits. Essa palavra chave também é usada para declarar que um método retorna um valor do tipo primitivo short
.
38 - static
Usada para declarar um campo, método ou classe interna como um campo de classe. As classes mantêm uma cópia dos campos da classe independentemente de quantas instâncias existem nessa classe. static
também é usado para definir um método como um método de classe. Os métodos de classe são vinculados a classe em vez de a uma instância específica e só podem operar em campos de classe.
39 - strictfp
Usada para restringir a precisão e o arredondamento dos cálculos de ponto flutuante para garantir a portabilidade.
40 - super
Usada para obter binding
dinâmico ou polimorfismo em tempo de execução. Usado também para acessar membros de uma classe herdada pela classe em que ela aparece. Permite que uma subclasse acesse métodos substituídos e membros ocultos de sua superclasse. A palavra chave super
também pode ser usada para encaminhar uma chamada de um construtor para um construtor na superclasse. E também é usado para especificar um limite inferior em um parâmetro de tipo em Generics
.
41 - switch
A palavra chave switch
é usada em conjunto com case
e default
para criar uma instrução switch
, que avalia uma variável, combina seu valor com um caso específico e executa o bloco de instruções associado a esse case
. Se nenhum case
corresponder ao valor, o bloco opcional identificado pelo default
será executado.
42 - synchronized
Usado na declaração de um método ou bloco de código para adquirir o mutex lock
para um objeto enquanto a thread
atual executa o código. Para métodos estáticos, o objeto bloqueado é a classe Class
. Garante que, no máximo exista uma thread
de cada vez operando no mesmo objeto e executando esse código. O mutex lock
é liberado automaticamente quando a execução sai do código sincronizado. Campos, classes e interfaces não podem ser declarados como synchronized
.
43 - this
Usado para representar uma instância da classe em que aparece. this
pode ser usado para acessar os membros da classe e como uma referência a instância atual. A palavra chave this
também é usada para encaminhar uma chamada de um construtor em uma classe para outro construtor na mesma classe.
44 - throw
Faz com que a instância da exceção declarada seja lançada. Isso faz com que a execução continue com o primeiro handler
de exceção em anexo declarado pela palavra chave catch
para manipular um tipo de exceção compatível com a atribuição. Se nenhum handler
de exceção for encontrado no método atual, o método retornará e o processo será repetido no método da chamada. Se nenhum handler
de exceções for encontrado em qualquer chamada de método na pilha, a exceção será passada para o handler
de exceções não capturadas da thread
.
45 - throws
Usado nas declarações do método para especificar quais exceções não são tratadas no método, mas passadas para o próximo nível mais alto do programa. Todas as exceções não capturadas em um método que não são instâncias de RuntimeException
devem ser declaradas usando a palavra chave throws
.
46 - transient
Declara que um campo de instância não faz parte do formulário serializado padrão de um objeto. Quando um objeto é serializado, apenas os valores de seus campos de instâncias não transitórios são incluídos na representação serial padrão. Quando um objeto é desserializado, os campos transitórios são inicializados apenas com o valor padrão. Se o formulário padrão não for usado, por exemplo, quando uma tabela serialPersistentFields
é declarada na hierarquia de classes, todas as palavra chave transient
são ignoradas.
47 - try
Define um bloco de instruções que possuem manipulação ou handling
de exceção. Se uma exceção for lançada dentro do bloco try
, um bloco catch
opcional poderá manipular os tipos de exceção declarados. Além disso, pode ser declarado um bloco finally
opcional que será executado quando a execução sair das cláusulas try
e catch
, independentemente de uma exceção ser lançada ou não. Um bloco try
deve ter pelo menos uma cláusula catch
ou um bloco finally
.
48 - void
A palavra chave void
é usada para declarar que um método não retorna nenhum valor.
49 - volatile
Utilizada em declarações de campo para garantir a visibilidade das alterações nas variáveis através das threads
. Toda leitura de uma variável volátil será lida na memória principal e não no cache da CPU, e todas as gravações em uma variável volátil serão gravadas na memória principal, e não apenas no cache da CPU. Métodos, classes e interfaces, portanto, não podem ser declarados voláteis, nem variáveis ou parâmetros locais.
50 - while
A palavra chave while
é usada para criar um loop while
, que testa uma expressão booleana e executa o bloco de instruções associado ao loop se a expressão for avaliada como verdadeira, isso continua até que a expressão seja avaliada como falsa. Essa palavra chave também pode ser usada para criar um loop do-while
.
true, false e null
Temos ainda os casos especiais de palavras reservadas que são usadas para valores literais.
true
= valor booleano literal para verdadeiro. false
= valor booleano literal para falso. null
= valor literal de referência.
identificadores especiais
var
= identificador especial que não pode ser usado como um nome de tipo(incluído no Java 10). _
= Adicionado no Java 11, o underscore
tornou-se uma palavra chave e não pode mais ser usado como nome de variável.
não utilizados
const
= embora reservada como palavra chave, const
não é usada e não tem função. Para definir constantes em Java é normal utilizarmos a palavra chave final
.
goto
= embora reservada como palavra chave, goto
não é usado e não tem função.
Bastante coisa não? Conhecia todas? A ideia era trazer alguma palavra nova para o seu vocabulário de código Java! Até a próxima! =)