在Java中,所有的变量必须先声明才能使用它们。变量声明的基本形式如下:
type identifier [ = value][, identifier[= value] ...] ;
type 是Java 的数据类型之一。该标识符是该变量的名称。申报指定类型的多个变量,用逗号分隔的列表。
下面是各种类型的变量声明的几个例子。需要注意的是它们可能也包括初始化。
int a, b, c; // declares three ints, a, b, and c.
int d = 3, e, f = 5; // declares threemore ints, initializing
// d and f.
byte z = 22; // initializes z.
double pi = 3.14159; // declares anapproximation of pi.
char x = 'x'; // the variable x has the value 'x'.
本章将解释各种变量类型Java语言提供。有三种类型的变量在Java中:
- 局部变量
- 实例变量
- 类/静态变量
局部变量:
- 局部变量的方法,构造函数或块中声明。
- 创建局部变量的方法,构造函数或块时进入,一旦退出方法,构造函数或块中的变量将被销毁。
- 访问修饰符不能用于局部变量。
- 局部变量是可见的,只有内声明的方法,构造函数或块。
- 局部变量在堆栈级别内部实现。
- 在这里对局部变量没有默认值,因此局部变量应该声明和初始值应在第一次使用前分配。
示例:
在这里,age 是一个局部变量。这是定义里面 pupAge() 方法,其范围仅限于该方法。
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();
}
}
这将产生以下结果:
Puppy age is: 7
例如:
下面的示例使用 age 没有初始化它,所以它会在编译时给出错误信息。
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();
}
}
编译它,这将产生以下错误:
Test.java:4:variable number might nothave been initialized
age = age + 7;
^
1 error
实例变量:
- 实例变量在类中声明,但在方法的外面,构造函数或任何块。
- 当空间分配给某个对象在堆中,插槽为每个实例变量创建值。
- 实例变量认为必须由一个以上的方法,构造函数或块,或一个对象的状态的关键部分必须出现在整个类中引用的值。
- 实例变量可以在使用前或后级的级别声明。
- 访问修饰符可以给出实例变量。
- 实例变量对于所有方法,构造函数和块在类中可见。通常,建议,使这些变量私有(接入层)。然而能见度子类可以给这些变量与使用访问修饰符。
- 实例变量有默认值。对于数字的默认值是0,为布尔值是false和对象引用为null。值可以在声明或构造函数中分配。
- 实例变量可以直接通过调用变量名的类的内部访问。然而在静态方法和不同的类(当实例变量被赋予访问)应使用完全限定名调用 ObjectReference.VariableName.
例子:
import java.io.*;
public class Employee{
// this instance variable is visible for any child class.
public String name;
// salary variable is visible inEmployee 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();
}
}
这将产生以下结果:
name : Ransika
salary :1000.0
类/静态变量:
- 类变量也称为静态变量在类的static关键字声明的,但在方法外面,构造函数或块。
- 每个类变量只有一个副本,不管有多少对象从它被创建。
- 静态变量很少使用不是被声明为常量等。常量是被声明为公共/私营,最终和静态变量。常量变量从来没有从他们的初始值改变。
- 静态变量被存储在静态存储器中。这是罕见的使用静态变量以外声明为final,用作公共或私有常数。
- 在程序启动时的静态变量被创建,在程序停止销毁。
- 能见度类似于实例变量。然而,大多数静态变量声明为 public,因为它们必须可用于类的使用者。
- 默认值是相同的实例变量。对于数字,默认值是0;为布尔值,它是假的,和对象引用,它为null。值可以在声明或构造函数中分配。另外值可以在特殊的静态初始化块进行分配。
- 静态变量可以通过调用与类名来访问。 ClassName.VariableName.
- 当定义的变量为 public static final ,那么变量的名称(常量)都是大写。如果静态变量是不公开的和最终的命名语法是相同的实例变量和局部变量。
例子:
import java.io.*;
public class Employee{
// salary variable is a privatestatic 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);
}
}
这将产生以下结果:
Development average salary:1000
注意:如果变量是从外部类访问的常数应被访问 Employee.DEPARTMENT