Java 变量类型

Java变量一节中我们介绍了变量的声明以及一些基本的操作。本章将解释 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();
   }
}

运行示例

这将在编译时产生以下错误

Main.java:4: error: variable age might not have been initialized
      age = age + 7;
            ^
1 error

实例变量

  • 实例变量在类中声明,但在方法、构造函数或任何块之外。
  • 当为堆中的对象分配空间时,将为每个实例变量值创建一个槽。
  • 实例变量在使用关键字“new”创建对象时创建,并在对象被销毁时销毁。
  • 实例变量包含必须由多个方法、构造函数或块引用的值,或者必须在整个类中存在的对象状态的基本部分。
  • 实例变量可以在使用之前或之后在类级别声明。
  • 可以为实例变量提供访问修饰符。
  • 实例变量对类中的所有方法、构造函数和块都是可见的。通常,建议将这些变量设为私有(访问级别)。但是,可以使用访问修饰符为这些变量提供子类的可见性。
  • 实例变量有默认值。对于数字,默认值为 0,对于布尔值,默认值为 false,对于对象引用,默认值为 null。可以在声明期间或在构造函数中分配值。
  • 实例变量可以通过在类内部调用变量名来直接访问。然而,在静态方法中(当实例变量被赋予可访问性时),它们应该使用完全限定名称来调用。ObjectReference.VariableName。
import java.io.*;
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 );
      System.out.println("薪水 : " + salary);
   }
}

public class Main {
    public static void main(String[] args){
      Employee empOne = new Employee("JIYIK");
      empOne.setSalary(1000.0);
      empOne.printEmp();
   }    
}

运行示例

上面示例编译运行结果如下

名字 : JIYIK
薪水 : 1000.0

类/静态变量

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
  • 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。
  • 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。
public class Employee {

   // salary是静态的私有变量
   private static double salary;

   // DEPARTMENT是一个常量
   public static final String DEPARTMENT = "开发人员 ";

   public static void main(String args[]) {
      salary = 10000;
      System.out.println(DEPARTMENT + "平均薪资:" + salary);
   }
}

运行示例

上面示例编译运行结果如下

开发人员 平均薪资:10000.0

注意 : 如果从外部类访问变量,可以这样访问:Employee.DEPARTMENT。

查看笔记