Palavras Reservadas
Java Sintaxe Palavras Reservadas
Palavras Reservadas
Palavras reservadas do java, ou keywords, são palavras que possuem significado especifico no código.
A linguagem contém 52+ palavras distribuídas em categorias com finalidades e fronteiras de uso bem definidas conforme tabela abaixo:

As palavras reservadas na linguagem Java possuem regras de identificação e utilização conforme descrição abaixo:
- Todas as palavras reservadas são minúsculas;
 - Nenhuma palavra reservada poderá ser utilizada definir nome de variáveis e métodos;
 - As palavras reservas determinam recursos ou características de forma individual ou agrupada para o seu algorítimo;
 
Agrupando as palavras
Para uma melhor interpretação e compreensão do uso das palavras reservadas em nosso cotidiano, é necessário primeiramente, uma organização e classificação das mesmas. Sendo assim, será mais fácil compreender sua aplicabilidade.
Modificadores de acesso
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| public | Acesso de qualquer classe | X | X | X | 
| private | Acesso apenas dentro da classe | X | X | X | 
| protected | Acesso por classes no mesmo pacote e subclasses | X | X | X | 
Tipos primitivos
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| boolean | um valor indicando verdadeiro ou falso | X | no retorno | |
| byte | um inteiro de 8 bits (signed) | X | no retorno | |
| char | um carácter Unicode (16bit unsigned) (signed) | X | no retorno | |
| double | um carácter Unicode (16bit unsigned) (signed) | X | no retorno | |
| float | um número de ponto flutuante de 32 bits | X | no retorno | 
Modificadores de classes, variáveis ou métodos
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| abstract | classe que não pode ser instanciada ou método que precisa ser implementado, por uma subclasse não abstrata | X | ||
| class | especifica uma classe | X | ||
| extends | indica a superclasse que a subclasse está estendendo | X | ||
| final | impossibilita que uma classe seja estendida, que um método seja sobrescrito ou que uma variável seja reinicializada | X | X | X | 
| implements | indica as interfaces que uma classe irá implementar | X | ||
| interface | especifica uma interface | X | ||
| native | indica que um método está escrito em uma linguagem dependente de plataforma, como o C | X | ||
| new | instancia um novo objeto, chamando seu construtor | X | ||
| static | faz um método ou variável pertencer à classe ao invés de às instâncias | X | ||
| strictfp | usado em frente a um método ou classe para indicar que os números de ponto flutuante seguirão as regras de ponto flutuante, em todas as expressões | X | ||
| synchronized | indica que um método só pode ser acessado por uma thread de cada vez | X | ||
| transient | impede a serialização de campos | X | ||
| volatile | indica que uma variável pode ser alterada durante o uso de threads | X | 
Controle de fluxo dentro de um bloco de código
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| break | sai do bloco de código em que ele está | fluxo | ||
| case | executa um bloco de código dependendo do teste do switch | X | ||
| continue | pula a execução do código que viria, após essa linha e vai para a próxima passagem do loop | fluxo | ||
| default | executa esse bloco de código caso nenhum dos teste de switch-case seja verdadeiro | X | ||
| do | executa um bloco de código uma vez, e então realiza um teste em conjunto com o while para determinar se o bloco deverá ser executado novamente | X | ||
| else | executa um bloco de código alternativo caso o teste "if" seja falso | X | ||
| for | usado para realizar um loop condicional de um bloco de código | X | ||
| if | usado para realizar um teste lógico de verdadeiro ou falso | X | ||
| instanceof | determina se um objeto é uma instância de determinada classe, superclasse ou interface | X | ||
| return | retorna um método sem executar qualquer código, que venha depois desta linha (também pode retornar uma variável) | X | ||
| switch | indica a variável a ser comparada nas expressões case | X | ||
| while | executa um bloco de código repetidamente enquanto a condição for verdadeira | X | 
Tratamento de erros
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| assert | testa uma expressão condicional, para verificar uma suposição do programador | X | ||
| catch | declara o bloco de código usado para tratar uma exceção | X | ||
| finally | bloco de código, após um try-catch, que é executado independentemente do fluxo de programa seguido ao lidar com uma exceção | X | ||
| throw | usado para passar uma exceção para o método que o chamou | X | ||
| throws | indica que um método pode passar uma exceção para o método que o chamou | assinatura | ||
| try | bloco de código que tentará ser executado, mas que pode causar uma exceção | X | 
Controle de pacotes
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| import | importa pacotes ou classes para dentro do código | X | ||
| package | especifica a que pacote, todas as classes de um arquivo pertencem. | X | 
Variáveis de referência
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| super | refere-se a superclasse imediata | X | ||
| this | refere-se a instância atual do objeto | X | 
Palavras reservadas não utilizadas
| Palavra | Descrição | Classe | Variável | Método | 
|---|---|---|---|---|
| const | não utilize para declarar constantes | |||
| goto | não implementada na linguagem Java, por ser considerada prejudicial | 
Combinação de palavras
Abaixo, iremos exercitar algumas das possibilidades mais recorrentes em combinar o uso das palavras reservadas a níveis de: Classe, Atributos e Métodos
| Nível | Combinação | Explicação | 
|---|---|---|
| classe | public class | Determina que a classe é pública | 
| classe | abstract class | Determina que a classe é abstrata | 
| classe | final class | Determina que a classe é final e não pode ser herdada | 
| classe | class A extends B | Determina que a classe A herda da classe B | 
| classe | class A implements B | Determina que a classe A implementa a interface B | 
| atributo | public static | Determina que o atributo é público e estático (nível de classe) | 
| atributo | public static final | Determina que o atributo é público, estático e inalterável (constante) | 
| método | abstract void | Determina que o método é abstrato e sem retorno | 
| método | synchronized void | Determina que o método é sincronizado e sem retorno | 
Palavras "opostas"
Assim como nas classificações gramaticais da língua portuguesa, existem algumas palavras que são completamente opostas (antônimas) na linguagem Java conforme tabela abaixo:
| Palavra | Palavra | Explicação | 
|---|---|---|
| package | import | Enquanto package determina o diretório real da classe, o import informa de onde será importada a classe. Isso porque, podemos ter classes de mesmo nome. | 
| extends | implements | enquanto extends determina que uma classe estende outra classe, implements determina que uma classe implementa uma interface, porém nunca o contrário. | 
| final | abstract | enquanto final determina fim de alteração de valor ou lógica comportamental, abstract em métodos, exige que sub-classes precisarão definir comportamento e um método abstrato. NOTA: Se uma classe contém um único método abstrato, toda classe precisa ser. | 
| throws | throw | Esta é uma das situações mais complicadas, de compreensão destas duas palavras. Enquanto a throws determina que um método pode lançar uma exceção, throw é a implementação que dispara a exceção. Vamos conhecer mais sobre este conceito no assunto Exceções. |