Pesquisar este blog

quarta-feira, 2 de março de 2016

Variáveis - JAVA -

Olhar geral

    Vamos discutir sobre um dos componentes principais de todas as linguagens de programação, que são as variáveis. Veremos as suas regras de nomenclatura adotadas pelos desenvolvedores em Java como padrão e código, suas classificações quanto aos usos e ciclo de vida no programa, bem como compreender como o computador entende quando esta estrutura é executada.

Conceitos

Em java as variáveis são classificadas em variáveis de instância, variáveis de classe, variáveis locais e parâmetros.

- Variáveis de instância: são variáveis que são definidas fora de métodos (métodos serão abordados no post sobre funções e procidures) e que são visíveis em todo o código da classe (Veja o post sobre Classes que será publicado em breve). Cada instância de uma classe possui uma cópia das  variáveis de instância, mas não é possível que uma classe enxergue as variáveis de outras classes.

- Variáveis de classe: são variáveis que contém em sua declaração a palavra static, ela é compartilhada por todas as instancias daquela classe, ou seja, o valor armazenado é visível à todas as classes instanciadas.

-Variáveis locais: a nomenclatura é idêntica a das variáveis de instancia, a única diferença é que estas variáveis são instanciadas dentro de métodos e construtores (construtores serão abordados mais tarde no post de Classes). Estas variáveis são somente visíveis dentro dos métodos em que foram declarados, elas são excluídas ao fim da execução do método (leia mais sobre escorpos de variáveis).

- Parâmetros: são variáveis que são declaradas junto com a assinatura do método (leia o post sobre funções e procidures). Elas são instanciadas com valores que são passados quando o método é chamado. O seu ciclo de vida é igual a das variáveis locais, apesar dos parâmetros serem instanciados fora do escorpo do método.

Léxico

    
     Java é case-sensitive, ou seja, ele diferencias os nomes de variáveis pelas letras maiúsculas e minúsculas: "Carro" e "carro" são dois nomes diferentes para o java.
     Os nomes de variáveis podem ser iniciados com uma letra Unicode, "$" ou um underscore ("_") e seguir com uma sequencia de dígitos, letras , "$" e undescores.
     Como padrão, é aconselhável que as variáveis sejam nomeadas com palavras que sejam auto-explicativas quanto a função que ela desempenhará durante o seu ciclo de vida.
     Se o nome da variável for só uma palavra, esta deve ser escrita  em letras minúsculas. Já se o nome for formado por mais de uma palavra, a partir da segunda palavra inicia-se  com uma letra maiúscula e as outras devem ser minúsculas.

                   Ex:   int idade = 19;
                           double  mesadaAnual = 1200.00;

     Não é aconselhável usar undescores para separar o nome das variáveis como em "casa_aluguel", pois esse isto caiu em desuso. É conveniente utilizar o underscore para separar nomes compostos de variáveis constantes, (será abordado o termo variáveis estáticas na secção Sintaxe logo abaixo) como em:

                   Ex:  public static  final int  CODIGO_ALIMENTO;
                           public static  final  String  NOME_DEPARTAMENTO;     
 
     Nomes de variáveis constantes devem ser escritas em letras maiúsculas.       
                       

Sintaxe


figura 1 - Exemplo de sintaxe completa de uma variável.


  

Semântico

     Quando estamos criando uma variável no nosso código java, estamos dizendo ao computador para criar um espaço na memória do tamanho que o tipo da variável sugere (veja  o post Tipo de variaveis - Java -).
     Na figura 1 o endereço da memória é então mapeado para o nome desta variável (que no nosso exemplo  é mensagem) para dentro de uma tabela de variáveis. Esta tabela é guardada pelo compilador até o fim do escorpo da variável. Quando digitar o nome da variável, o compilador irá buscar a posição da tabela que contém esse nome como nome da variável, logo depois de encontrada, ele obtém o valor que está vinculada a ela.
      As variáveis do java podem receber dois tipos de dados: os tipos primitivos e os por referência (veja em Tipo de variaveis - Java -).

Primitivos:  são as variáveis que recebem valores de tipos primitivos, esses valores são armazenados na posição da memória no formato binário, de tal modo que, se recuperarmos esta sequencia binária e convertermos no mesmo tipo, o valor será o mesmo.

Figura 2 - Esquema de uma variável primitiva

Referencia: variáveis que recebem um tipo de dado por referencia, ela não necessariamente guarda os dados que lhe são atribuídos, ela na verdade guarda um ponteiro que nada mais é que um endereço de memória que levará ao valor primitivo ou a um conjunto de valores primitivos ou até mesmo outros dados por referência.

Figura 3 - Esquema de uma variável por referência


     A diferenciação entre tipos de referência e tipos primitivos é muito importante para a programação em java (para muitas coisas também!), este conceito é o motivo de vários bugs na vida de vários programadores do mundo, então fique alerta!


Referências

DEITEL, Paul; DEITEL, Harvey. Java - como programar. 8. ed. São Paulo: Pearson, 2009.

ORACLE AND/OR ITS AFFILIATES. Variables. 2015. Disponível em: <https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html>. Acesso em: 29 fev. 2016.


Nenhum comentário:

Postar um comentário