Java 中的static关键字

引子:曾经看见一句话,初学Java你就该知道static可以修饰方法和变量。学Java一年你就该知道静态内部类。学Java三年你就该知道静态代码块。

1.静态变量

  Java中static只能修饰成员变量,不能修饰局部变量。静态变量存储于JVM内存区的Method Area(方法区)。static常与final一起使用,定义常量。

2.静态方法

  静态方法在类定义的时候已经被装载和分配,静态方法可以直接通过类名调用。静态方法只能调用static修饰的成员变量和方法,静态方法不持有this引用。

3.静态内部类

  static修饰类的时候,只能修饰内部类。因为匿名内部类和非静态内部类隐式的持有外部类的this引用,所以经常在Android中使用来避免内存泄露。单例模式可以通过静态内部类的方式构造,classloader的机制可以保证初始化instance时只有一个线程,所以也是线程安全的。

4.静态代码块

  静态代码块是在虚拟机加载类的时候执行的,只执行一次。如果有多个static代码块JVM将按照它们在类中出现的先后顺序依次执行它们。非静态代码块是在类new一个实例的时候执行,而且是每次new对象实例都会执行。

    静态代码块是主动执行的,静态方法是被调用的时候才执行的。

5.静态导入

  静态导入是JDK1.5之后的新特性。可以在导包的时候import static导入包也可以直接导入静态方法。在使用的时候可以直接方法名调用。虽然静态导包减少了代码,但是牺牲了代码的可读性。使用的时候要慎重。

你可能感兴趣的:(Java 中的static关键字)