1 package demo; 2 3 public class MainDemo { 4 private static String address; 5 6 public static void main(String[] args) { 7 MainDemo.show(); 8 } 9 10 private static void show() { 11 System.out.println(address); 12 } 13 }
三、静态代码块
static块可以置于类中的任何地方,类中可以有多个static块。与成员变量,成员方法一样,在类被加载的时候静态代码块就存在于内存中了,在类初次加载的时候,JVM按照static块的顺序来执行每个static块,并且只会执行一次,这样无形中也提高了点性能。
1 package demo; 2 3 public class StaticDemo { 4 private static String address = "china"; 5 6 static { 7 System.out.println("first static block"); 8 } 9 10 static { 11 System.out.println("second static block"); 12 } 13 14 public static void main(String[] args) { 15 StaticDemo.show(); 16 } 17 18 private static void show() { 19 System.out.println(address); 20 } 21 }
输出结果:
first static block second static block china
从以上我们总结出以下static关键字的一些特性:
1、静态可以用来修饰成员变量,成员方法,静态代码块;
2、随着类的加载而加载,优先于对象而存在,被所有的对象所共享,可以被类名直接调用(建议),当然也通过实例调用,虽然在内存中的副本只有一个,不过生命周期长,当类被回收时,静态区域空间才会被释放;
3、静态方法中只能访问静态变量与静态成员;
4、当所有对象共享某个数据的时候,就把这个成员变量定义为静态的;
5、静态代码块只执行一次。