Entendendo Tipos de Variáveis Java: Um Guia Abrangente
Uma variável nos fornece armazenamento nomeado que nossos programas podem manipular. Cada variável em Java tem um tipo específico, que determina o tamanho e layout da memória da variável; o intervalo de valores que podem ser armazenados dentro daquela memória; e o conjunto de operações que podem ser aplicadas à variável.
Você deve declarar todas as variáveis antes que elas possam ser usadas. Seguindo está a forma básica de uma declaração de variável:
tipo_de_dado variavel [ = valor][, variavel [ = valor] ...] ;
Aqui tipo_de_dado é um dos tipos de dados de Java e variavel é o nome da variável. Para declarar mais de uma variável do tipo especificado, você pode usar uma lista separada por vírgulas.
Seguindo estão exemplos válidos de declaração e inicialização de variáveis em Java:
Exemplo
int a, b, c; // Declara três ints, a, b, e c. int a = 10, b = 10; // Exemplo de inicialização byte B = 22; // inicializa uma variável de tipo byte B. double pi = 3.14159; // declara e atribui um valor de PI. char a = 'a'; // a variável char a é inicializada com valor 'a'
Este capítulo explicará vários tipos de variáveis disponíveis na Linguagem Java. Existem três tipos de variáveis em Java:
- Variáveis locais
- Variáveis de instância
- Variáveis de classe/estáticas
Variáveis Locais
Variáveis locais são declaradas em métodos, construtores ou blocos.
Variáveis locais são criadas quando o método, construtor ou bloco é entrado e a variável será destruída uma vez que sai do método, construtor ou bloco.
Modificadores de acesso não podem ser usados para variáveis locais.
Variáveis locais são visíveis apenas dentro do método, construtor ou bloco declarado.
Variáveis locais são implementadas no nível de pilha internamente.
Não há valor padrão para variáveis locais, então variáveis locais devem ser declaradas e um valor inicial deve ser atribuído antes do primeiro uso.
Exemplo
Aqui, age é uma variável local. Isto é definido dentro do método pupAge() e seu escopo é limitado a apenas este método.
Demo Ao Vivo
public class Test {
public void pupAge() {
int age = 0;
age = age + 7;
System.out.println("Idade do Filhote é : " + age);
}
public static void main(String args[]) {
Test test = new Test();
test.pupAge();
}
}
Isto produzirá o seguinte resultado:
Saída
Idade do Filhote é: 7
Exemplo
Exemplo seguinte usa age sem inicializá-lo, então daria erro no momento da compilação.
Demo Ao Vivo
public class Test {
public void pupAge() {
int age;
age = age + 7;
System.out.println("Idade do Filhote é : " + age);
}
public static void main(String args[]) {
Test test = new Test();
test.pupAge();
}
}
Isto produzirá o seguinte erro durante a compilação:
Saída
Test.java:4:variable number might not have been initialized age = age + 7; ^ 1 error
Variáveis de Instância
Variáveis de instância são declaradas em uma classe, mas fora de um método, construtor ou qualquer bloco.
Quando um espaço é alocado para um objeto no heap, um slot para cada valor de variável de instância é criado.
Variáveis de instância são criadas quando um objeto é criado com o uso da palavra-chave 'new' e destruídas quando o objeto é destruído.
Variáveis de instância guardam valores que devem ser referenciados por mais de um método, construtor ou bloco, ou partes essenciais do estado de um objeto que devem estar presentes durante toda a classe.
Variáveis de instância podem ser declaradas no nível da classe antes ou depois do uso.
Modificadores de acesso podem ser dados para variáveis de instância.
As variáveis de instância são visíveis para todos os métodos, construtores e blocos na classe. Normalmente, é recomendado tornar estas variáveis private (nível de acesso). No entanto, visibilidade para subclasses pode ser dada para estas variáveis com o uso de modificadores de acesso.
Variáveis de instância têm valores padrão. Para números, o valor padrão é 0, para Booleanos é false, e para referências de objeto é null. Valores podem ser atribuídos durante a declaração ou dentro do construtor.
Variáveis de instância podem ser acessadas diretamente chamando o nome da variável dentro da classe. No entanto, dentro de métodos estáticos (quando variáveis de instância são dadas acessibilidade), elas devem ser chamadas usando o nome totalmente qualificado. ObjectReference.VariableName.
Exemplo
Demo Ao Vivo
import java.io.*;
public class Employee {
// esta variável de instância é visível para qualquer classe filha.
public String name;
// variável salary é visível apenas na classe Employee.
private double salary;
// A variável name é atribuída no construtor.
public Employee (String empName) {
name = empName;
}
// A variável salary é atribuída um valor.
public void setSalary(double empSal) {
salary = empSal;
}
// Este método imprime os detalhes do employee.
public void printEmp() {
System.out.println("nome : " + name );
System.out.println("salário :" + salary);
}
public static void main(String args[]) {
Employee empOne = new Employee("Ransika");
empOne.setSalary(1000);
empOne.printEmp();
}
}
Isto produzirá o seguinte resultado:
Saída
nome : Ransika salário :1000.0
Variáveis de Classe/Estáticas
Variáveis de classe também conhecidas como variáveis estáticas são declaradas com a palavra-chave static em uma classe, mas fora de um método, construtor ou bloco.
Haveria apenas uma cópia de cada variável de classe por classe, independentemente de quantos objetos são criados a partir dela.
Variáveis estáticas são raramente usadas além de serem declaradas como constantes. Constantes são variáveis que são declaradas como public/private, final e static. Variáveis constantes nunca mudam de seu valor inicial.
Variáveis estáticas são armazenadas na memória estática. É raro usar variáveis estáticas além de declaradas final e usadas como constantes públicas ou privadas.
Variáveis estáticas são criadas quando o programa inicia e destruídas quando o programa para.
Visibilidade é similar a variáveis de instância. No entanto, a maioria das variáveis estáticas são declaradas public já que devem estar disponíveis para usuários da classe.
Valores padrão são iguais a variáveis de instância. Para números, o valor padrão é 0; para Booleanos, é false; e para referências de objeto, é null. Valores podem ser atribuídos durante a declaração ou dentro do construtor. Adicionalmente, valores podem ser atribuídos em blocos inicializadores estáticos especiais.
Variáveis estáticas podem ser acessadas chamando com o nome da classe ClassName.VariableName.
Ao declarar variáveis de classe como public static final, então nomes de variáveis (constantes) são todos em maiúsculas. Se as variáveis estáticas não são public e final, a sintaxe de nomenclatura é a mesma de variáveis de instância e locais.
Exemplo
Demo Ao Vivo
import java.io.*;
public class Employee {
// variável salary é uma variável estática privada
private static double salary;
// DEPARTMENT é uma constante
public static final String DEPARTMENT = "Desenvolvimento ";
public static void main(String args[]) {
salary = 1000;
System.out.println(DEPARTMENT + "salário médio:" + salary);
}
}
Isto produzirá o seguinte resultado:
Saída
Desenvolvimento salário médio:1000
Nota − Se as variáveis são acessadas de uma classe externa, a constante deve ser acessada como Employee.DEPARTMENT
O que Vem a Seguir?
Você já usou modificadores de acesso (public & private) neste capítulo. O próximo capítulo explicará Modificadores de Acesso e Modificadores de Não-Acesso em detalhes.
Java
- Domine Variáveis e Tipos de Dados Primitivos em C#: Guia Completo
- Variáveis, Constantes e Literais em C: Um Guia Completo
- Entendendo Classes de Armazenamento em C: Escopo, Tempo de Vida e Performance
- Variáveis e Literais em Java: Guia Completo
- Tipos de Dados Primitivos do Java: Guia Completo com Exemplos
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Tipos de Anotação em Java: Guia Completo de Predefinidas, Customizadas e Meta-Anotações