Java 类变量

Java教程 - Java类变量

三种类型的变量

Java支持三种不同生存期的变量:

  • 成员变量
  • 方法局部变量
  • 静态变量

类成员变量

在创建实例时创建类的成员变量,并且当对象被销毁时被销毁。未显式分配值的所有成员变量在声明期间自动分配一个初始值。成员变量的初始化值取决于成员变量的类型。

下表列出了成员变量的初始化值:

元素类型 初始值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char "\u0000"
boolean false
对象引用 null

在以下示例中,变量x在声明变量时设置为20。

public class Main{
   int x = 20;
}

如果您不设置它们,以下示例显示默认值。

class MyClass {
  int i;

  boolean b;

  float f;

  double d;

  String s;

  public MyClass() {
    System.out.println("i=" + i);
    System.out.println("b=" + b);
    System.out.println("f=" + f);
    System.out.println("d=" + d);
    System.out.println("s=" + s);
  }

}

public class Main {
  public static void main(String[] argv) {
    new MyClass();

  }
}

输出:

方法局部变量的示例

方法的自动变量在入口时创建方法,并且仅在该方法的执行期间存在。只有在执行该方法时才能访问自动变量。(此规则的一个例外是内部类)。

自动变量(方法局部变量)不由系统初始化。自动变量必须在使用前显式初始化。例如,这个方法不会编译:

public class Main{
    public int wrong() { 
      int i;
      return i+5;
    } 
 
}

编译上面的代码时的输出:



类变量(静态变量)

这里只是一个类变量的一个副本,它存在,而不管该类的实例数。 静态变量在类加载时初始化; 这里,当Main类被加载时,y将被设置为30。

public class Main{ 
  static int y = 30;
}

Java this关键字

this 引用当前对象。

this 可以在任何方法中使用来引用当前对象。

以下代码显示如何使用 this 关键字。

// A use of this. 
Rectangle(double w, double h) { 
    this.width = w; // this is used here
    this.height = h; 
}

隐藏的实例变量和this

使用 this 引用隐藏的实例变量。

成员变量和方法参数可以具有相同的名称。在这种情况下,我们可以使用它来引用成员变量。

Rectangle(double width, double height) { 
    this.width = width; 
    this.height = height; 
}

以下示例显示如何使用此引用实例变量。

class Person{
    private String name;


    public Person(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public class Main{
    public static void main(String[] args) {
        Person person = new Person("Java");
        System.out.println(person.getName());
        person.setName("new name");
        System.out.println(person.getName());
    }
}

上面的代码生成以下结果。