1 数据成员的声明
数据成员是用来描述事物的静态特征的。
一般情况下,声明一个数据成员必须做的事是给出这个数据成员的标识符并指明它所属的数据类型。
声明数据成员时,还可以用修饰符对数据成员的访问权限作出限制。
数据成员声明格式:
[修饰符] 数据成员类型 数据成员名表;
修饰符是可选的,它是指访问权限修饰符 public、private、protected 和非访问权限修饰符 static、final 等;
数据成员类型就是诸如 int、float 等 Java 允许的各种定义数据类型的关键字;
数据成员名表是指一个或多个数据成员名,即用户自定义标识符,当同时声明多个数据成员名时,彼此间用逗号分隔。
2 static 修饰的静态数据成员
用 static 修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。
其特点如下:
它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。
可以通过类名加点操作符访问它。
static 类数据成员仍属于类的作用域,还可以使用 public static、private static 等进行修饰。修饰符不同,可访问的层次也不同。
3 静态数据成员的初始化
静态数据成员的初始化可以由用户在定义时进行,也可以由静态初始化器来完成。
静态初始化器是由关键字 static 引导的一对花括号括起的语句块,其作用是在加载类时,初始化类的静态数据成员。
静态初始化器与构造方法不同,它有以下特点:
静态初始化器用于对类的静态数据成员进行初始化。而构造方法用来对新创建的对象进行初始化。
静态初始化器不是方法,没有方法名、返回值和参数表。
静态初始化器是在它所属的类加载到内存时由系统调用执行的,而构造方法是在系统用 new 运算符产生新对象时自动执行的。
静态初始化器的格式:
static
{
// 初始化静态数据成员
}
4 final 修饰的最终数据成员
如果一个类的数据成员用 final 修饰符修饰,则这个数据成员就被限定为最终数据成员。
最终数据成员可以在声明时进行初始化,也可以通过构造方法赋值,但不能在程序的其他地方赋值,它的值在程序的整个执行过程中是不能改变的。
因此,也可以说用 final 修饰符修饰的数据成员是标识符常量。
用 final 修饰符说明常量时,需要注意以下几点:
需要说明常量的数据类型并指出常量的具体值。
若一个类有多个对象,而某个数据成员是常量,最好将此常量声明为 static,即用 static final 两个修饰符修饰,这样做可节省空间。