java中的代码块

1.作用
对Java 类或对象进行初始化

2.代码块(或初始化块)的分类:
一个类中代码块若有修饰符,则只能被static修饰,称为 静态代码块(static block),没有使用static修饰的,为 非静态代码块

3 static 代码块化 通常用于初始化static的属性

class Person {
	public static int total;
	static {
		total = 100;// 为total 赋初值
	}
…… //其它属性或方法声明
}

4.代码块的特点
 静态代码块:用static 修饰的代码块

  1. 可以有输出语句。
  2. 可以对类的属性、类的声明进行初始化操作。
  3. 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
  4. 若有多个静态的代码块,那么按照从上到下的顺序依次执行。
  5. 静态代码块的执行要先于非静态代码块。
  6. 静态代码块随着类的加载而加载,且只执行一次。

 非静态代码块:没有static 修饰的代码块

  1. 可以有输出语句。
  2. 可以对类的属性、类的声明进行初始化操作。
  3. 除了调用非静态的结构外,还可以调用静态的变量或方法。
  4. 若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
  5. 每次创建对象的时候,都会执行一次。且先于构造器执行。

非静态代码块可以在创建对象时对对象的属性等进行初始化。

5.静态代码块实例

class Person {
	public static int total;
		static {
		total = 100;
		System.out.println("in static block!");
		}
	}
public class PersonTest {
	public static void main(String[] args) {
		System.out.println("total = " + Person.total);
		System.out.println("total = " + Person.total);
	}
}

输出:
in static block
total=100
total=100

6.程序中成员变量赋值的执行顺序
java中的代码块_初始化