Carreira Dev

17 mar, 2009

Reconhecimento das palavras-chave em Java

Publicidade

Um dos requisitos básicos da prova de certificação para programador Java é o reconhecimento das palavras-chave da linguagem. Palavras-chave, também conhecidas como palavras reservadas da linguagem, são palavras que não podem ser usadas como identificadores, ou seja, não podem ser usadas para representar variáveis, classes ou nomes de métodos. Assim resolvi fazer esse artigo com algumas dicas de como isso pode ser feito.

As perguntas relacionadas especificamente às palavras-chave estão dentro do primeiro objetivo da prova: “Declaração, inicialização e escopo”. Mas as perguntas que podem parecer alguma pegadinha podem parecer que estão avaliando qualquer outro tópico, pois qualquer classe Java usa pelo menos uma palavra-chave (class).

Saber o que cada palavra-chave representa na linguagem é o principal passo para não cair nas pegadinhas da Sun.

Abaixo listo todas as palavras-chave para a versão atual do Java (6), junto com o propósito de cada uma:

abstract – um método marcado como abstract informa que o mesmo não possui uma implementação ainda, mas que uma classe que o estiver herdando precisará implementá-lo.

assert – utilizado para fazer debug de lógica em tempo de execução.

boolean – para variáveis de valor lógico: true e false.

break – normalmente utilizado para interromper execuções de estruturas de repetição.

byte – para variáveis numéricas de precisão -128 até 127.

case – indica uma opção entre várias em blocos catch.

catch – é utilizado juntamente com try, seu bloco é executado somente em caso de o programa lançar uma exceção do tipo indicado no seu parâmetro.

char – para variáveis de caracteres, onde a sua representação interna equivale a um tipo numérico.

class – para definir o início de um arquivo Java, todas as classes possuem pelo menos essa palavra-chave.

const – essa palavra não tem uso específico em Java mas mesmo assim é uma palavra-chave.

continue – para pular a iteração atual de uma estrutura de repetição.

default – normalmente utilizado para o final de uma ou mais opções case´s de um bloco catch.

do – estrutura de repetição que garante que o bloco será executado pelo menos uma vez durante a execução do programa.

double – para variáveis numéricas e de pontos flutuantes com precisão de 64 bits.

else – complemento de estrutura de condição.

enum – palavra-chave adicionada na versão 5 do Java, é um tipo especifico de dados, que assemelha-se com uma classe, que tem operações e dados internos.

extends – utilizado para aplicar o conceito de herança para uma classe, onde uma classe receberá os métodos e variáveis de instância da classe chamada de pai.

final – marca uma variável, classe ou método para que não seja possível modificar o seu valor ou comportamento no decorrer da execução do programa.

finally – compõe o início de um bloco que sempre é executado para um bloco de tratamento de erros, mais utilizado para limpar recursos que foram abertos no bloco de tratamento.

float – variáveis numéricas e de pontos flutuantes com precisão de 32 bits.

for – estrutura de repetição que declara, testa e incrementa variável para uso local.

goto – não tem uso específico na linguagem.

if – estrutura de condição mais comum da linguagem.

implements – informa que uma determinada classe irá implementar uma determinada interface.

import – para relacionar classes externas à atual, permitindo o uso de nomes mais curtos para recursos da classe externa.

instaceof – serve para fazer o teste “É-UM” com duas referências.

int – para variáveis numéricas de precisão -2.147.483.648 até 2.147.483.647.

interface – informa que o modelo não é uma classe, mas sim um protótipo de classe sem implementação para os métodos, obrigando as classes que a implementarão siga as regras de retorno, assinatura de métodos, etc…

long – para variáveis numéricas de precisão de 64 bits.

native – métodos marcados como native dizem que sua implementação é feita em uma outra linguagem (por exemplo C), para que se possa acessar recursos específicos do sistema operacional.

new – utilizada para se criar novas instâncias de objetos.

package – informa em que estrutura de diretórios a classe está localizada.

private – marca a visibilidade de um método ou variável de instância para que apenas a própria classe acesse.

protected – marca a visibilidade de um método ou variável de instância para que a própria classe ou suas filhas acessem.

public – marca a visibilidade de uma classe, método ou variável de instância para que todas as classes em todos os pacotes tenham acesso.

return – devolve para o método chamador um valor que é do mesmo tipo declarado na assinatura do método.

short – para variáveis numéricas de precisão de -32.768 até 32.767.

static – marca um método ou variável para que se tenha apenas uma cópia da memória desse membro.

strictfp – serve para aumentar a precisão em operações com pontos flutuantes.

super – chama membros da classe pai.

switch – representa blocos de decisões de fluxos semelhantes ao if, mas com mais organização em determinadas situações.

synchronized – um método com essa marcação será controlado para que não se possa ter duas threads acessando o mesmo objeto.

this – representa a instância que está atualmente sendo executada.

throw – é utilizado para lançar uma exceção.

throws – é utilizado para se declarar que um método pode lançar uma exceção.

transient – indica que uma determinada variável de instância não será serializada junto com o objeto da classe.

try – para executar métodos que têm chances de lançar exceções, mas que serão tratados em blocos catch´s que o seguirão.

void – representa um retorno vazio, ou seja, nenhum retorno para esse método.

volatile – indica que uma determinada variável de instância pode ser modificada em duas threads distintas ao mesmo tempo.

while – bloco de repetição que será executado enquanto seu parâmetro estiver retornando verdadeiro (true).

Com o conhecimento do que cada palavra faz na linguagem é muito mais fácil não cair nas pegadinhas.

Para facilitar mais ainda seguem mais algumas dicas.

Uma palavra-chave não possui nem nunca é escrita com letras maiúsculas. Isso é muito importante, pois às vezes um código pode ser bem grande, mas o erro está na primeira linha com a palavra Class em maiúscula e isso pode ser bem complexo de se achar e te custar uma pergunta inteira (lembrando que a prova não tem ½ certo).

As palavras “true” e “false” NÃO são palavras-chave, muita gente as confunde por serem duas literais que são valores e não serem escritas com “” (aspas). Por exemplo: boolean valor = false; (ao invés de boolean valor = “false”;) lembre-se de que true e false são apenas valores comuns, portanto, não são palavras-chave.

A palavra “main” NÃO é considerada palavra-chave. Muitos pensam que poderia ser uma pelo motivo de main ser um método específico, onde a execução começa a ser feita e que é o primeiro método chamado pelo compilador, etc…

Mas, raciocine, main é APENAS um nome para um método, com uma assinatura específica, tudo bem, mas ainda assim apenas um nome. Lembre-se de que uma classe pode ser declarada apenas da seguinte forma: class MinhaClasse { } , ou seja, se o método não estiver lá, o programa não terá nenhuma saída, mais ainda compila. De qualquer forma, lembre-se, main não é uma palavra-chave.

As palavras const e goto SÃO palavras-chave, apesar de não terem usos específicos em Java. Muitos programadores que já usam Java se atrapalham na hora de reconhecer essas duas palavras, pois, por não conhecerem o que fazem as duas palavras (por não existir uso em Java), pensam que é uma palavra comum.

A palavra enum É uma palavra-chave, esse tipo específico de dados foi adicionado na versão 5 do Java, logo, quem estuda Java por um livro de Java 1.4 ou faz simulados dessa versão, o que é a coisa mais comum no mercado, pois existem bons livros e simulados, pode ter problemas com essa palavra.

Tanto a palavra java como javac NÃO são palavras-chave do Java. Essas palavras servem para executar e compilar um programa em Java, e isso confunde muitas pessoas na hora do exame. Lembre-se de que os comandos de manipulação do Java são externos à linguagem e não atrapalham na execução interna do programa, portanto não são palavras-chave.

Com isso em mente, fica muito mais fácil entender e identificar as palavras-chave do Java e também conseguir mais um ponto nas provas de certificação em Java.