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.