Java 变量


变量用于在程序运行过程中保存数据。


变量类型

Java语言定义了4种类型的变量。

  • 实例变量(Instance Variable),即对象的非静态属性。对象(类实例)保存自已的状态在实例变量中,每个类的实例都保存一份自己的实例变量。实例变量声明时不包含static关键字。
  • 类变量(Class Variable),即对象的静态属性。类的所有实例共用类变量。类变量申明时包含static关键字。final可以和static一起使用表示类变量不能被更改。
  • 局部变量(Local Variable),方法使用局部变量保存临时状态。局部变量只能在声明该变量的方法中使用。
  • 参数(Parameter),参数用于方法调用中传递数据,也用于例外(Exception)处理中传递例外。

实例变量

下面是实例变量的例子。

public class Fruit {
  private String name;
  private String color;

  public Fruit(String name, String color) {
    this.name = name;
    this.color = color;
  }

  public static void main(String[] args) {
    Fruit apple = new Fruit("apple", "red");
    Fruit banana = new Fruit("banana", "yellow");
    System.out.println("The " + apple.name + " is " + apple.color);   // The apple is red
    System.out.println("The " + banana.name + " is " + banana.color); // The banana is yellow
  }
}

类变量

下面是类变量的例子。

public class Visitor {
    private String name;
    private static int COUNT = 0;

    public Visitor(String name) {
        this.name = name;
        COUNT += 1;
    }

    public static void main(String[] args) {
        Visitor cat = new Visitor("cat");
        Visitor dog = new Visitor("dog");
        System.out.println("Number of visitors is " + cat.COUNT);    // 2
        System.out.println("Number of visitors is " + dog.COUNT);    // 2
        // 正确访问类变量的方式
        System.out.println("Number of visitors is " + Visitor.COUNT);    // 2
    }
}

局部变量和参数

下面是局部变量和参数的例子。

public class Pet {
    private String name;
    public Pet(String name) {
        this.name = name;
    }

    public void eat(String food) {
        String favorite = name + " eat " + food;
        System.out.println(favorite);    // Dog eat bone
    }

    public static void main(String[] args) {
        new Pet("Dog").eat("bone");
        new Pet("Cat").eat("fish");
    }
}

public void eat(String food)中的foodeat方法的参数变量,String favorite = name + " eat " + food;中的favoriteeat方法的局部变量。

变量命名规则

  • 变量名区分大小写,变量名开始字符可以为Unicode字符(包括汉字)、美元符号($)和下划线,但通常使用Unicode字符。
  • 变量名中开始字符后面的字符可以为Unicode字符(包括汉字)、美元符号($)、下划线和数字。
  • 如果变量名只包含一个单词,单词的所有字符都为小写。如果变量名包含多个单词,除第一个单词的所有字符都为小写外,后面单词的首字符大写,其他字符小写。如果变量保存的是常量值,变量名都是大写,如果变量名包含多个单词,单词之间以下划线分隔。