欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

70.static*块

程序员文章站 2022-04-29 10:53:54
...

接下来讲讲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。