Neste artigo, explicaremos a todos os alunos de Java o que são variáveis ​​Java e como trabalhar com elas.

O que é variável Java

Uma variável em Java pode ser considerada como uma caixa. Essa "caixa" tem um certo tamanho: a memória que é alocada para ela. Quanta memória será alocada depende do tipo da variável, mas falaremos sobre isso um pouco mais tarde. Ao mesmo tempo, o tamanho da própria caixa não pode ser alterado após sua criação, mas o conteúdo pode. A caixa pode estar vazia. Você pode "inserir" algum valor nele e, em seguida, extrair e colocar algum outro valor. Assim, uma variável é um campo que armazena valores de dados durante a execução de um programa Java. Esta caixa tem características importantes:
  • pode sempre conter apenas um valor (ou pode estar vazio, caso em que conterá o valor padrão),
  • Tem um tipo de dados. Seu tamanho depende do tipo de dados, bem como de qual área específica da memória o local é alocado para ele (onde está).
Variáveis ​​em Java - 1

Como declarar variáveis

Para declarar variáveis ​​em Java, você precisa especificar seu tipo e nome. Aqui está um exemplo de declaração de três variáveis:

int myInt;
String s;
Object variableName;
Aqui int , String e Object são os tipos de dados e myInt , s , variableName são nomes de variáveis. O tipo de dados deve ser escolhido com base nas necessidades do programa, sendo melhor escolher um nome para que fique claro do que se trata. Claro que para iniciantes não é tão rígido, mas em grandes projetos, nomes de variáveis ​​como 's' podem prejudicar a legibilidade do código. Portanto, é melhor se acostumar a nomear as variáveis ​​de uma maneira que deixe claro para que servem desde o início. Dentro do razoável, claro.

Como inicializar variáveis

Ao declarar uma variável, você aloca memória para ela. Inicialização significa que você "coloca" um determinado valor na "caixa". Isso pode ser feito imediatamente durante a declaração da variável ou posteriormente. Além disso, o valor de uma variável pode mudar durante a execução do programa. Exemplo:

public class VariableTest {
    public static void main(String[] args) {
        int myInt = 5;
        String s;
        s = "init";
        System.out.println(s);
        s = s+5;
        System.out.println(s);
    }
}
Aqui declaramos e inicializamos a variável myInt em uma linha, imediatamente alocando memória para ela (32 bits para cada número int), demos um nome e então colocamos o valor 5 na memória alocada. Em seguida, declaramos que estávamos alocando espaço de memória para a string s , e um comando separado já colocou o valor “init” nela. Depois disso, imprimimos a string e alteramos o valor da variável s . Neste programa, imprimimos as linhas e, se você executá-lo, verá o seguinte resultado:
init init5

Tipos de dados de variáveis ​​em Java: primitivos e não primitivos

Os tipos de dados de variáveis ​​em Java são divididos em dois grupos:
  • Os tipos de dados primitivos incluem byte , short , int , long , float , double , boolean e char
  • Tipos de dados não primitivos, como String , Arrays e Classes
Aqui está um exemplo de como trabalhar com variáveis:

public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point number
       char myLetter = 'a';         // character
       boolean myBool = true;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);
      
   }
}
int , char , boolean e float são primitivos. String não é primitivo. E a variável myStudent ? Este é um objeto da classe Student criada pelo usuário . Foi criado simplesmente para ilustrar o trabalho com variáveis ​​não primitivas. Eles são a maioria em Java, já que quase tudo nessa linguagem de programação é um objeto. Para entender, segue o código da classe Aluno :

import java.util.Date;

public class Student {
   String surname;
   String name;
   String secondName;
   Long birthday; // Long instead of long is used by Gson/Jackson json parsers and various orm databases

   public Student(String surname, String name, String secondName, Date birthday ){
       this.surname = surname;
       this.name = name;
       this.secondName = secondName;
       this.birthday = birthday == null ? 0 : birthday.getTime();
   }

   @Override
   public int hashCode(){
       //TODO: check for nulls
       //return surname.hashCode() ^ name.hashCode() ^ secondName.hashCode() ^ (birthday.hashCode());
       return (surname + name + secondName + birthday).hashCode();
   }
   @Override
   public boolean equals(Object other_) {
       Student other = (Student)other_;
       return (surname == null || surname.equals(other.surname) )
               && (name == null || name.equals(other.name))
               && (secondName == null || secondName.equals(other.secondName))
               && (birthday == null || birthday.equals(other.birthday));
   }
}

Tipos de variáveis ​​em Java: local, instância e estática

Existem três tipos diferentes de variáveis ​​em Java, nós as listamos a seguir:
  1. Variáveis ​​locais
  2. Variáveis ​​de instância
  3. Variáveis ​​estáticas

Variáveis ​​locais

Uma variável declarada dentro do corpo do método é chamada de variável local. Além disso, variáveis ​​locais são declaradas dentro de construtores e blocos. Você pode usar variáveis ​​locais apenas dentro desse método, construtor ou bloco onde foram criadas e os outros métodos da classe nem sabem que a variável existe. Portanto, as variáveis ​​locais são criadas quando o método, construtor ou bloco é inserido e a variável é destruída quando o método, construtor ou bloco não funciona. Uma variável local não pode ser definida com a palavra-chave static . Ainda mais: você não pode usar modificadores de acesso para variáveis ​​locais. Aqui está um exemplo:

public class VariableTest {
   public static void main(String[] args) {
       System.out.println(myMethod("C plus "));
   }
           private static String myMethod(String myString) {
       String myOtherString = "plus";
       return myString + myOtherString;
   }
}
Aqui myOtherString é uma variável local. Você não pode usá-lo do outro método, mas myMethod . As variáveis ​​locais não podem ter valores padrão. Se pelo menos uma variável local não for inicializada no programa, o programa não funcionará corretamente. Vamos fazer uma pequena alteração em um dos exemplos anteriores e "esquecer" de inicializar a variável myBool :

public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point 
       char myLetter = 'a';         // character
       boolean myBool;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);

   }
}
Se tentarmos executar o programa, ele lançará um erro:
Erro:(10, 50) java: a variável myBool pode não ter sido inicializada

Variáveis ​​de instância

Uma variável declarada dentro da classe, mas fora do corpo de qualquer método, construtor ou bloco, é chamada de variável de instância. As variáveis ​​de instância são criadas quando um objeto é criado usando a palavra-chave new . Ele é destruído quando o objeto é destruído. Ele não pode ser declarado como estático, mas você pode usar modificadores de acesso para variáveis ​​de instância. As variáveis ​​de instância são visíveis para todos os métodos, construtores e blocos da classe. Normalmente, as variáveis ​​de instância são privadas, mas você pode alterar a visibilidade das subclasses. As variáveis ​​de instância, em oposição às variáveis ​​locais, possuem valores padrão. Para todos os tipos primitivos numéricos, o valor padrão é 0, para booleanos é falso e para referências de objeto é nulo. Os valores podem ser atribuídos durante a declaração ou dentro do construtor. Aqui está um exemplo:

//instance variable example
public class Employee {

   // here we have a public instance variable. It is visible for this class and child classes
   public String name;

   //this instance variable is private so it’s visible for the Employee class only. You can use setters and getters to get it
   private double salary;

   public Employee (String empName) {
       name = empName;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public double getSalary() {
       return salary;
   }

   public void setSalary(double employeeSalary) {
       salary = employeeSalary;
   }

   public static void main(String args[]) {
       Employee employee = new Employee("Johnny");
       employee.setSalary(1500);
       System.out.println("name = " + employee.getName());
       System.out.println("salary = " + employee.getSalary());
   }
}

variáveis ​​estáticas

Uma variável declarada como estática é chamada de variável estática. Java permite que você declare tais variáveis ​​fora de um método, construtor ou bloco. Não pode ser local, eles pertencem à classe, não às instâncias. Isso significa que uma única cópia de uma variável estática é criada e compartilhada entre todas as instâncias da classe. A alocação de memória para variáveis ​​estáticas ocorre apenas uma vez quando a classe é carregada na memória. Eles podem ter qualquer visibilidade, mas geralmente são declarados como públicos. Eles também têm valores padrão, como variáveis ​​de instância.

public class Box
{
   public void add(int data)
   {
       Storage.sum = Storage.sum + data;
       Storage.count++;
   }

   public void remove(int data)
   {
       Storage.sum = Storage.sum - data;
       Storage.count--;
   }
}

public class Storage
{
   public static int count = 0;
   public static int sum = 0;
}
No exemplo acima, criamos uma classe Storage separada , movemos as variáveis ​​count e sum para ela e as declaramos estáticas. Variáveis ​​estáticas públicas podem ser acessadas de qualquer método de programa (e não apenas de um método). Para reforçar o que você aprendeu, sugerimos que você assista a uma vídeo aula do nosso Curso de Java