What is the keyword “static”
static 是的意思是“静态的”。在 Java 中,它是一个修饰符,当使用它修饰成员时
- 有 static 修饰的成员变量称之为静态变量,或类变量
- 被 static 修饰的成员(变量、方法、内部类、代码块)先于对象存在,其生命周期和类相同,会随着类的加载而加载,并且该成员被所有对象共享。
- static修饰的成员多了一种调用方式,可以直接被类名所调用。
- 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
Features
- 修饰内部类
public class StaticTest{ public static class InnerClass{ InnerClass(){ System.out.println("static inner class..") } public void InnerMethod(){ System.out.println("static inner method.."); } } public static void main(String[] args) { InnerClass inner = new StaticTest.InnerClass(); inner.InnerMethod(); } }
输出: static inner class.. static inner method..
修饰方法、修饰变量和修饰代码块就不举例子了,和修饰内部类类似
- 修饰方法
- 修饰变量
- 修饰代码块
分析
静态变量存放在方法区中,并且是被所有线程所共享的,所以我们的方法区也叫静态区。方法区包含所有的class和static变量。方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。而java堆存放的就是我们创建的一个个实例变量。