70.static自由块

阅读更多

接下来讲讲static自由块。

 

前面提到了自由块(游离块),那么作为Java源代码特殊的组成部分,是可以用static来修饰的。修饰后的结果我们来分析下。

 

自由块可以看成是一种特殊的方法,这个方法没有方法名、没有输入参数、没有返回值,不能进行方法调用。从这个角度来看,在自由块前面也可以加上static关键字来修饰。这样,这个自由块就成了静态自由块。静态自由块通常用于初始化静态变量。

public class Count {
 private int serialNumber;

 public static int counter;

 static {
  System.out.println("static自由块被执行");
  counter = 1;
 }

 public static int getTotalCount() {
  return counter;
 }

 public Count() {
  counter++;
  serialNumber = counter;
 }

 public static void main(String[] args) {
  System.out.println("main() invoked");
  System.out.println("counter = " + Count.counter);
 }
}


在这个类中,定义了一个静态的int类型变量counter,然后在static自由块中初始化这个变量。编译并运行这个程序,可以得到如下的输出:
static自由块被执行
main() invoked
counter = 1


因为static自由块是类相关而不是实例相关的,所以,即使没有实例化对象,它也会被执行(在main()方法中没有实例化这个类)----它将向控制台输出“static自由块被执行”并将静态变量“counter”初始化成1。

 

 

你可能感兴趣的:(70.static自由块)