- public class BasicTest {public static void main(String[] args) {
- System.out.println("m1:");
- Mimi m1=new Mimi();
- System.out.println("m2:");
- Mimi m2=new Mimi();
- }
- }
- class Mimi {
- public static int si=0;
- int di=si;
- static{
- // 首先执行
- si++;
- System.out.println("static block1: si="+si);
- }
- {
- //si*=2;
- System.out.println("block2: si="+si+", di="+di);
- }
- static{
- // 首先执行
- si++;
- System.out.println("static block2: si="+si);
- }
- public Mimi() {
- di=10;
- System.out.println("constructor: si="+si+", di="+di);
- si=500;
- }
- }
执行顺序是:
静态成员变量初始化
静态代码块调用
动态成员变量初始化
非静态代码块调用
构造方法调用
以下供练习:
- public class TestPerson {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Person person = new Person();
- Person person2 = new Person();
- }
- }
- class Person {
- public final String name;
- public int age;
- public Person() {
- System.out.println("无参构造方法");
- }
- {
- System.out.println("代码块 2");
- }
- {
- System.out.println("代码块 1");
- name = "小明";
- }
- static {
- System.out.println("静态代码块 2");
- }
- static {
- System.out.println("静态代码块 1");
- }
- public Person(int age) {
- this.age = age;
- //this.name = "";
- System.out.println("构造 age 方法");
- }
- public void goToSchool() {
- System.out.println(name + "goToSchool 方法");
- }
- }
结果:
静态代码块 2
静态代码块 1
代码块 2
代码块 1
无参构造方法
代码块 2
代码块 1
无参构造方法
来源: http://www.bubuko.com/infodetail-2530161.html