1 static修饰符
类的成员变量分为静态变量和实例变量, 被stacit修饰的变量,叫静态变量,没被修饰的就是实例变量了.
静态变量的特点,在于其在内存中只有一个COPY,在使用时不需要实例化,直接用类名来调用就可以了.
同样,比如
public static int add()
这样的叫静态方法,同样,使用静态方法时不需要实例化类.
在静态方法中要注意两点
A 静态方法中,不能用this关键字,也不能访问非静态变量,比如
public class Voter{
private static int count;
private String name;
public static void printVoteResult(){
System.out.println("当前投票数为:"+count); //正确
System.out.println("当前投票数为:"+name); //错误
System.out.println("当前投票数为:"+this.name); //错误
同样,静态方法中不能用super关键字
此外,静态方法必须被实现,因为静态方法是表示某个类的特有功能,不需要实例化,因此必须要给实现.,比如
static abstract void add()是错误的。
2 类的初始化
A 对于final类型的变量,如果在编译时能计算其值,则此时该类不会被初始化,比如
class Tester
{
public static final int a=2*3;
static
{
System.out.println("abc");
}
}
public class samle
{
System.out.println("a="+Tester.a);
}
则只会输出a=6
而如果是编译时算不出的话,则要初始化这个类,比如
public static final int a=....运算表达式;
3 final修饰符
final修饰的方法不能被子类的方法覆盖,修饰的类不能被子类继承,要注意的是,在一个类中,如果出现final常量,则必须被初始化,
比如
public a
final int a;//错误