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()); } }
上面的代码生成以下结果。