Identificadores
O Java tem regras para identificadores e elas se aplicam para dar nomes as variáveis, métodos, classes e campos.
Existem apenas três itens que você deve se lembrar.
- Os nomes devem começar com letra ou com os símbolos $ ou _, aliás estes dois símbolos são os únicos que você pode utilizar em um nome.
- Os números podem serem adicionados ao nome, mas não como primeira carácter do nome.
- Os nomes não devem ser iguais as palavras que o Java utiliza (são as palavras reservadas). O Java é case sensitive com isto você pode fazer variações de palavras com o mesmo nome. Mas isto não é uma boa ideia.
O exame não exige que você decore todas as palavras reservadas, mas as mais comuns é bom você saber como por exemplo, class, abstract, os identificados das variáveis primitivas e assim por diante.
Outra técnica para dar nome aos identificadores é utilizar o CamelCase. Por exemplo, thisIsMyClass. A técnica consiste em você adicionar a letra maiúscula na nova palavra que está se iniciando no identificador. É mais fácil ler desta maneira thisIsMyClass ou desta thisismyclass?
Algumas regras que os programadores seguem são as seguintes:
- Nome de variáveis e métodos começam com a letra minúscula e seguem a técnica CamelCase.
- Nome de classe começam com a letra maiúscula e seguem a técnica CamelCase.
- Apesar de poder utilizar o símbolo $ para começar a nomear um identificador não é uma boa ideia, porque o compilador utiliza este símbolo para alguns arquivos.
Variáveis Locais
- Uma variável local é definida dentro de um método.
- Variáveis locais precisam ser iniciadas antes de ser utilizadas.
- Elas não têm valores padrões e tem valores aleatórios antes de serem inicializadas.
O compilador não vai deixar você ler uma variável que não foi inicializada. Por exemplo, o código a seguir gera um erro de compilação:
1 2 3 4 5 6 |
public int notValid(){ int y = 10; int x; int reply = x + y; //não compila return reply; } |
Veja que o x não foi inicializado e quando o compilador verificar isto apontará o erro. A mensagem será: variable x might not have been initialized.
Vamos ver mais um exemplo.
1 2 3 4 5 6 7 8 9 10 11 12 |
public void findAnswer(boolean check){ int answer; int onlyOneBranch; if(check){ onlyOneBranch = 1; answer = 1; }else{ answer = 2; } System.out.println(answer); System.out.println(onlyOneBranch); //não compila } |
Veja que as duas variáveis int não foram inicializadas. Mas por que só a variável onlyOneBranch não compila?
O compilador é inteligente o bastante para saber que a variável answer vai ter o valor atribuído 1 ou 2, só que a onlyOneBranch não segue o mesmo princípio, por isto o compilador gera um erro de compilação.
Instâncias e Variáveis de Classe
Variáveis que não são locais são conhecidas como variáveis de instância ou variáveis de classe. Variáveis de instância são também chamadas de campos. Variáveis de classe são compartilhadas por múltiplos objetos.
Instâncias e variáveis de classe não precisam ser inicializadas. Estas variáveis possuem tipos padrões de inicialização. Você precisa saber os valores padrões destas variáveis.
Quando não houver valor atribuído a estas variáveis o compilador sempre irá utilizar o valor da tabela.
Entendendo Escopo de Variável
Vimos que variáveis locais são declaradas dentro de métodos. Quantas variáveis locais você vê neste método?
public void eat(int piecesOfCheese){
int bitesOfCheese = 1;
}
Há duas variáveis locais. bitesOfCheese é declarada entro do método e piecesOfCheese é chamada por parâmetro. Ambas variáveis estão dentro do escopo do método. Isto significa que elas não podem ser utilizadas fora do método.
Variáveis locais nunca tem um escopo maior do que a do método que ela está inserida. Contudo, ela pode ter um escopo menor. Por exemplo:
1 2 3 4 5 6 |
public void eatIfHungry(boolean hungry){ if(hungry){ int bitesOfCheese = 1; } //bitesOfCheese saiu do seu escopo System.out.println(bitesOfCheese); //não compila } |
A variável hungry tem mesmo escopo do método, bitesOfCheese tem um escopo menor. A variável bitesOfCheese só pode ser utilizada dentro do escopo do if.
Como você pode ter notado o escopo (área de atuação) são limitados pelas as chaves ({}).
Tome cuidado no exame com os escopos, podem aparecer questões que podem tentar te confundir utilizando os escopos. Vamos a um exemplo.
1 2 3 4 5 6 7 8 9 10 11 12 |
public void eatMore(boolean hungry, int amountOfFood){ int roomInBelly = 5; if(hungry){ boolean timeToEat = true; while(amountOfFood > 0){ int amountEaten = 2; roomInBelly = roomInBelly – amountEaten; amountOfFood = amountOfFood – amountEaten; } } System.out.println(amountOfFood); } |
Quando você ver um código deste a primeira coisa é identificar os blocos de código (escopos). Neste caso há três blocos, basta ver as aberturas e fechamentos das chaves. Neste exemplo tudo está correto, não há nada que possa dar um erro de compilação.
Vamos ver mais um código.
1 2 3 4 5 6 7 8 9 10 |
public class Mouse{ static int MAX_LENGTH = 5; int length; public void grow(int inches){ if(length < MAX_LENGTH){ int newSize = length + inches; length = newSize; } } } |
Lembrando que variáveis de instância são também chamadas de campos. Variáveis de classe são compartilhadas por múltiplos objetos.
Nesta classe nós temos uma classe de variável(MAX_LENGTH), uma instância de variável(length) e duas variáveis locais(inches e newSize).
MAX_LENGTH é uma classe de variável porque tem a palavra static na sua declaração. Esta variável permanece até o fim do programa.
length é uma variável de instância, esta variável só pode ser utilizada dentro do escopo do Mouse e esta variável vai existir enquanto o objeto Mouse existir.
A variável local inches só pode ser utilizada dentro do escopo grow e vai existir até o fim da execução do método grow.
A variável newSize só pode ser utilizada dentro do bloco if e vai existir até o fim da execução do if.
Vamos relembrar as regras do escopo.
- Variável local: variável que fica dentro do escopo que inicia com a abertura da chave({) e termina com o fechamento da chave(}).
- Variável de instância: variável inicia com a criação do objeto e terminará quando o garbage collector fazer a limpeza.
- Variável de classe: variável inicia com o início do programa e termina quando o programa é fechado.
❤️ Curso Java Para Iniciantes
👍 Curso de Desenvolvimento Web Completo
Deixe um comentário