1.类成员
通常,类成员通过创建类实例来访问。而若将类成员声明成static属性后,它属于一个类,可以通过类名被访问,而不需要创建任何类的实例。
类变量和类方法:被声明为static属性的成员变量和成员方法
实例变量和实例方法:没有声明static属性的,访问时需要先创建对象
类的所有实例共享类变量,每个实例对类变量的修改都会直接影响到其他实例
在类方法中不能使用this或super,并且不能创建内部类的实例
访问类成员有三种方法:
1)用类名访问,如Member.setClassVar(6)
2)创建实例后,用实例访问,如m1.setClassVar(6)
3)当调用类成员时,如果是在同一个类中,则可直接调用
如下例:
class Member{
static int classVar;
int instanceVar;
static void setClassVar(int i){
classVar=i;
}
void setInstanceVar(int i){
instanceVar=i;
classVar=i;
}
public static void main(String a[]){
Member m1=new Member();
m1.setInstanceVar(9);//不能直接调用
m1.setClassVar(6);//或setClassVar(6),或Member.setClassVar(6)
System.out.println("classVar="+classVar+"instanceVar="+m1.instanceVar);//instanceVar不能直接调用
}
}
类变量的初始化:类变量的初始化不使用构造方法进行,可通过以下途径进行
1)使用默认值。具体和实例变量相同。同样,用final修饰的类值类变量不能使用默认值,否则编译时不能通过
2)声明时初始化,如public static int a=6;
3)使用静态初始化块,当初始化不适合于一个表达式时,可以采用
如: static double buffer[]=new double[BUFFER_SIZE];
static
{
for(int i=0; i<buffer.length; i++)
buffer[i]=java.lang.Math.random();
}
4)使用一个类方法初始化,如上面例子