Na linguagem Java, todas as variáveis devem ser declaradas antes do uso. O formato básico para declarar variáveis é o seguinte:
type identifier [ = value][, identifier [= value] ...] ;
Descrição do formato: type é um tipo de dados Java. identificador é o nome da variável. Várias variáveis do mesmo tipo podem ser declaradas separadas por vírgulas.
Listados abaixo estão alguns exemplos de declarações de variáveis. Observe que alguns incluem um processo de inicialização.
int a, b, c; // 声明三个int型整数:a、b、c。 int d = 3, e, f = 5; // 声明三个整数并赋予初值。 byte z = 22; // 声明并初始化z。 double pi = 3.14159; // 声明了pi。 char x = 'x'; // 变量x的值是字符'x'。
Os tipos de variáveis suportados pela linguagem Java são:
- Variáveis locais: Variáveis em métodos de uma classe.
- Variáveis de instância: variáveis independentes de métodos, mas sem modificação estática.
- Variáveis de classe: variáveis independentes de métodos, modificadas com estática.
public class Variable{ static int allClicks=0; // 类变量String str="hello world"; // 实例变量public void method(){ int i =0; // 局部变量} }
Variáveis locais Java
- Variáveis locais são declaradas em métodos, construtores ou blocos de instruções;
- Variáveis locais são criadas quando métodos, construtores ou blocos de instruções são executados. Quando executados, as variáveis serão destruídas;
- Modificadores de acesso não podem ser usados em variáveis locais;
- Variáveis locais só são visíveis no método, construtor ou bloco de instruções em que são declaradas;
- Variáveis locais são alocadas na pilha.
- Variáveis locais não possuem valor padrão, portanto, após uma variável local ser declarada, ela deve ser inicializada antes de poder ser usada.
Exemplo 1
No exemplo a seguir, a idade é uma variável local. É definido no método pupAge() e seu escopo é limitado 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(); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
Puppy age is: 7
Exemplo 2
No exemplo a seguir, a variável idade não é inicializada, portanto ocorre um erro durante a 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(); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
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 dentro de uma classe, mas fora de métodos, construtores e blocos de instruções;
- Quando um objeto é instanciado, o valor de cada variável de instância é determinado;
- Variáveis de instância são criadas quando o objeto é criado e destruídas quando o objeto é destruído;
- O valor de uma variável de instância deve ser referenciado por pelo menos um método, construtor ou bloco de instruções, para que o exterior possa obter informações sobre a variável de instância por meio desses métodos;
- Variáveis de instância podem ser declaradas antes ou depois do uso;
- Os modificadores de acesso podem modificar variáveis de instância;
- Variáveis de instância são visíveis para métodos, construtores ou blocos de instruções em uma classe. Em geral, as variáveis de instância devem ser privadas. Variáveis de instância podem ficar visíveis para subclasses usando modificadores de acesso;
- Variáveis de instância possuem valores padrão. O valor padrão das variáveis numéricas é 0, o valor padrão das variáveis booleanas é falso e o valor padrão das variáveis do tipo de referência é nulo. O valor de uma variável pode ser especificado no momento da declaração ou no construtor;
- Variáveis de instância podem ser acessadas diretamente através do nome da variável. Mas em métodos estáticos e outras classes, você deve usar o nome totalmente qualificado: ObjectReference.VariableName.
Exemplo:
import java.io.*; public class Employee{ // 这个成员变量对子类可见public String name; // 私有变量,仅在该类可见private double salary; //在构造器中对name赋值public Employee (String empName){ name = empName; } //设定salary的值public void setSalary(double empSal){ salary = empSal; } // 打印信息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(); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
name : Ransika salary :1000.0
Variáveis de classe (variáveis estáticas)
- Variáveis de classe também são chamadas de variáveis estáticas e são declaradas com a palavra-chave static em uma classe, mas devem estar fora de métodos, construtores e blocos de instruções.
- Não importa quantos objetos uma classe crie, a classe possui apenas uma cópia das variáveis de classe.
- Variáveis estáticas raramente são usadas, exceto quando declaradas como constantes. Constantes referem-se a variáveis declaradas como tipos públicos/privados, finais e estáticos. As constantes não podem ser alteradas após a inicialização.
- Variáveis estáticas são armazenadas em uma área de armazenamento estático. Muitas vezes declaradas como constantes, as variáveis raramente são declaradas usando apenas estática.
- Variáveis estáticas são criadas no início do programa e destruídas no final do programa.
- Tem visibilidade semelhante às variáveis de instância. Mas para ficarem visíveis aos usuários da classe, a maioria das variáveis estáticas são declaradas como tipos públicos.
- Os valores padrão são semelhantes às variáveis de instância. O valor padrão das variáveis numéricas é 0, o valor padrão das variáveis booleanas é falso e o valor padrão dos tipos de referência é nulo. O valor de uma variável pode ser especificado ao declará-la ou no construtor. Além disso, variáveis estáticas também podem ser inicializadas em blocos de instruções estáticas.
- Variáveis estáticas podem ser acessadas através de: ClassName.VariableName.
- Quando uma variável de classe é declarada como um tipo final estático público, o nome da variável de classe deve usar letras maiúsculas. Se a variável estática não for do tipo público e final, seu método de nomenclatura será consistente com o método de nomenclatura de variáveis de instância e variáveis locais.
Exemplo:
import java.io.*; public class Employee{ //salary是静态的私有变量private static double salary; // DEPARTMENT是一个常量public static final String DEPARTMENT = "Development "; public static void main(String args[]){ salary = 1000; System.out.println(DEPARTMENT+"average salary:"+salary); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
Development average salary:1000
Nota: Caso outras classes queiram acessar esta variável, poderão acessá-la assim: Employee.DEPARTMENT.
Neste capítulo aprendemos sobre os tipos de variáveis Java e no próximo capítulo apresentaremos o uso de modificadores Java.