static主要有两种作用:
1、位某特定的数据类型或对象分配单一的存储空间,而与创建对象的个数无关。
2、将某个方法或属性与类而不是对象关联在一起。
static主要有4种使用情况:
1、static成员变量(叫做静态变量)
所有此类的对象都可以使用静态变量,静态变量在类加载的使用就被加载了。
注意:在Java中,不能再方法体中定义static变量。
因为在方法体中的变量叫局部变量,在JVM中“局部变量”保存在栈中,而静态变量保存在方法区中。
2、static成员方法
static方法是类的方法。
static方法中只能访问静态成员变量和静态成员方法,因为当static方法被调用时,非静态成员方法和变量可能还没被加载。
static成员方法中不能用this和super,因为this和super不一定被创建了。
3、static代码块
public class Test{
private static int a;
static{
Test.a=1;
Sysout.out.printLn(a);
System.out.printLn("staic block is called");
}
public static vodi main(Stringp[ ]args){
}
}
输出
4
static block id called
4、static内部类
只有内部类才能被定义为staic。
可以不一览与外部类实例对象而被实例化,静态内部类只能访问外部类中的静态成员金额静态方法。
package innerClass;
public class OutClass1 {
public int oid;
public String oname;
public static class InnerStaticClass1{
public int iid;
public String iname;
}
}
package innerClass;
import innerClass.OutClass1.InnerStaticClass1;
public class Test1 {
public static void main(String[] args) {
OutClass1 oc=new OutClass1();
InnerStaticClass1 ic=new InnerStaticClass1(); //不依赖与外部类的实例
}
}