Java - Tipos de Variáveis
Uma variável nos fornece armazenamento nomeado que nossos programas podem manipular. Cada variável em Java possui um tipo específico, que determina o tamanho e o layout da memória da variável; a faixa de valores que podem ser armazenados nessa 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. A seguir está a forma básica de uma declaração de variável -
data type variable [ = value][, variable [ = value] ...] ;
Aqui, tipo de dados é um dos tipos de dados Java e variável é o nome da variável. Para declarar mais de uma variável do tipo especificado, você pode usar uma lista separada por vírgulas.
A seguir estão exemplos válidos de declaração de variável e inicialização em Java -
Exemplo
int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte B = 22; // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a'; // the char variable a iis initialized with value '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 é inserido e a variável será destruída assim que sair do método, construtor ou bloco.
Os modificadores de acesso não podem ser usados para variáveis locais.
Variáveis locais são visíveis apenas dentro do método declarado, construtor ou bloco.
Variáveis locais são implementadas no nível da pilha internamente.
Não há valor padrão para variáveis locais, então as variáveis locais devem ser declaradas e um valor inicial deve ser atribuído antes do primeiro uso.
Exemplo
Aqui, a idade é uma variável local. Isso é definido dentro do método pupAge () e seu escopo é limitado apenas a este método.
public class Test {
public void pupAge() {
int age = 0;
age = age + 7;
System.out.println("Puppy age is : " + age);
}
public static void main(String args[]) {
Test test = new Test();
test.pupAge();
}
}
Isso produzirá o seguinte resultado -
Resultado
Puppy age is: 7
Exemplo
O exemplo a seguir usa o age sem inicializá-lo, portanto, haveria um erro no momento da compilação.
public class Test {
public void pupAge() {
int age;
age = age + 7;
System.out.println("Puppy age is : " + age);
}
public static void main(String args[]) {
Test test = new Test();
test.pupAge();
}
}
Isso produzirá o seguinte erro ao compilá-lo -
Resultado
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 'novo' e destruídas quando o objeto é destruído.
Variáveis de instância contêm 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 em toda a classe.
Variáveis de instância podem ser declaradas em nível de classe antes ou depois do uso.
Modificadores de acesso podem ser fornecidos para variáveis de instância.
As variáveis de instância são visíveis para todos os métodos, construtores e bloco da classe. Normalmente, é recomendável tornar essas variáveis privadas (nível de acesso). No entanto, a visibilidade para subclasses pode ser dada para essas 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 é falso e para referências de objetos é nulo. Os valores podem ser atribuídos durante a declaração ou no construtor.
Variáveis de instância podem ser acessadas diretamente chamando o nome da variável dentro da classe. No entanto, nos métodos estáticos (quando as variáveis de instância têm acessibilidade), eles devem ser chamados usando o nome totalmente qualificado. ObjectReference.VariableName .
Exemplo
import java.io.*;
public class Employee {
// this instance variable is visible for any child class.
public String name;
// salary variable is visible in Employee class only.
private double salary;
// The name variable is assigned in the constructor.
public Employee (String empName) {
name = empName;
}
// The salary variable is assigned a value.
public void setSalary(double empSal) {
salary = empSal;
}
// This method prints the employee details.
public void printEmp() {
System.out.println("name : " + name );
System.out.println("salary :" + salary);
}
public static void main(String args[]) {
Employee empOne = new Employee("Ransika");
empOne.setSalary(1000);
empOne.printEmp();
}
}
Isso produzirá o seguinte resultado -
Resultado
name : Ransika
salary :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 raramente são usadas além de serem declaradas como constantes. Constantes são variáveis declaradas como públicas / privadas, finais e estáticas. 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 que não sejam declaradas finais e usadas como constantes públicas ou privadas.
Variáveis estáticas são criadas quando o programa é iniciado e destruídas quando o programa é interrompido.
A visibilidade é semelhante às variáveis de instância. No entanto, a maioria das variáveis estáticas são declaradas públicas, pois devem estar disponíveis para os usuários da classe.
Os valores padrão são iguais às variáveis de instância. Para números, o valor padrão é 0; para os booleanos, é falso; e para referências de objeto, é nulo. Os valores podem ser atribuídos durante a declaração ou no construtor. Além disso, os valores podem ser atribuídos em blocos inicializadores estáticos especiais.
Variáveis estáticas podem ser acessadas chamando com o nome de classe ClassName.VariableName .
Ao declarar variáveis de classe como public static final, os nomes de variáveis (constantes) estão todos em maiúsculas. Se as variáveis estáticas não forem públicas e finais, a sintaxe de nomenclatura será a mesma que as variáveis de instância e locais.
Exemplo
import java.io.*;
public class Employee {
// salary variable is a private static variable
private static double salary;
// DEPARTMENT is a constant
public static final String DEPARTMENT = "Development ";
public static void main(String args[]) {
salary = 1000;
System.out.println(DEPARTMENT + "average salary:" + salary);
}
}
Isso produzirá o seguinte resultado -
Resultado
Development average salary:1000
Note - Se as variáveis forem acessadas de uma classe externa, a constante deve ser acessada como Employee.DEPARTMENT
O que vem a seguir?
Você já usou modificadores de acesso (público e privado) neste capítulo. O próximo capítulo explicará os modificadores de acesso e modificadores de não acesso em detalhes.