1)静态类变量(修饰成员变量):
1.Static int data语句说明data为类变量,为一个类的共享变量,是所有对象共享的,它不
属于任何对象,是属于整个类的(静态方法也是一样)。
2.Static定义的是一块为整个类共有的一块存储区域。
3.其变量可以通过类名去访问:类名.变量名(与通过对象引用访问变量是等价的)。
2)静态方法(修饰方法):
1.Public static void printData(){}:表明此类方法为类方法(静态方法),访问是在编译期
完成,执行效率比较高。
2.静态方法不需要有对象,可以使用类名调用(不需要实例也可以调用静态方法)。3.静态方法中不能访问类的非静态成员,包括成员变量和方法;只能访问本类中的静态
变量和其它静态方法。因为此时是通过类调用的,没有对象的概念。方法中this.data和
super.data是不可用的。
原因:从根本上说,静态变量不管类是否实例化都会存在,而实例变量只有类实例化了
才存在。直接调用静态方法时并不确定实例变量是否存在。
4. 一般情况下,主方法是静态方法,所以JVM可以直接调用它,主方法为静态方法是因
为它是整个软件系统的入口,而进入入口时系统中没有任何对象,只能使用类调用。
5.静态方法不能被覆盖,如果子类中有和父类重名的静态方法,虽然编译通过,但它并
不能实现多态,所以不能称作覆盖。
3)静态内部类(注意:只能修饰成员内部类):
class Out{
public static class Inner{}
}4)静态代码块 1.初始化块在类被加载后首先被运行,不管类是否实例化,而且只执行这一次 2.静态代码块和静态方法相同,不能使用外部非静态成员。 3.静态代码块执行和静态变量的初始化顺序由代码从上到下顺序决定。
|