java:static关键字
static关键字主要有4种使用情况:成员变量,成员方法,代码块和内部类。
1.成员变量
虽然java中没有全局的概念,但可以通过static关键字来达到全局的效果。java类型提供了两种类型的变量,用static关键字修饰的静态变量和不用static关键字修饰的实例变量。 静态变量属于类,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使用了。
不能在方法体中定义static变量。
public static void add(){// static final int i = 0; // 编译失败,只能在类中定义静态变量,不能在方法中定义静态变量}
2. 成员方法
与变量类似,java类同时也提供了static方法与非static方法。static方法是类的方法,不需要创建对象就可以被调用。static不能使用this和super关键字,不能调用非static方法。
static一个重要的作用是实现单例模式,单例模式的特点是该类只能有一个实例。
public class TestStatic{static{// 加载类时, 执行静态代码块System.out.println("....static......");}private static TestStatic f = new TestStatic(); //加载类时,为静态变量赋初值, 当去掉static,就会造成无限引用,引发栈溢出{System.out.println("..non..static.......");}public TestStatic(){System.out.println("......构造....");}public static void main(String[] args){System.out.println("main");TestStatic ff = new TestStatic();} }3.static代码块
静态代码块在类中是独立于成员变量和成员函数的代码块的。它不在任何一个方法体内,jvm在加载类时会执行static代码块,如果有多个static代码块,jvm将会按顺序来执行。这些static代码块只会被执行一次。
4. static内部类
static内部类是指被声明为static的内部类,它可以不依赖于外部类实例对象而被实例化,而通常的内部类需要在外部类实例化后才能实例化。静态内部类不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法。
static经常与final结合使用:
static final修饰变量,表示变量一旦赋值,不能被修改,并且通过类名可以访问该变量。
static final修饰方法,表示该方法不可覆盖,并且可以通过类名直接访问。
总结
以上是生活随笔为你收集整理的java:static关键字的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 数据结构:单向环形链表
- 下一篇: java:volatile,instan