AJPFX总结Java 程序初始化过程

觉得Core Java在Java 初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱。我觉得还是要搞清楚它的过程比较好。所以现在结合我的学习经验写出具体过程:

过程如下:

1.在类的声明里查看有无静态元素(static element, 我姑且这么叫吧),比如:复制内容到剪贴板代码:static int x = 1,
{
 //block
 float sss = 333.3; String str = “hello”;
}

或者 比如

static {
 //(static block),
 int x = 2;
 double y = 33.3;
}
  如果有static element则首先执行其中语句,但注意static element只执行一次,在第二次创建类的对象的时候,就不会去执行static element的语句.

2.查看此类是否为启动运行类,若为启动运行类,则执行main()方法里的语句对应语句

3.若不是启动运行类,则按代码的排版先后顺序继续执行非static element的变量赋值以及代码块.

4.最后执行构造方法,如果在被调用的构造方法里面有this关键字(注意,如果你考虑要调用其他构造方法,则应该把this写在最前面,不然会产生错误),则先调用相应构造方法主体,调用完之后再执行自己的剩下语句.复制内容到剪贴板代码:/** //*
*

  • @author livahu
  • Created on 2006年9月6日, 下午17:00
    */
    class FirstClass …{
     FirstClass(int i) …{
      System.out.println(“FirstClass(” + i + “)”);
     }

void useMethod(int k) …{
  System.out.println(“useMethod(” + k + “)”);
 }
}

class SecondClass …{
 static FirstClass fc1 = new FirstClass(1);
 FirstClass fc3 = new FirstClass(3);
 static …{
  FirstClass fc2 = new FirstClass(2);
 }

…{
  System.out.println(“SecondClass’s block, this block is not static block.”);
 }

SecondClass() …{
  System.out.println(“SecondClass()”);
 }
 FirstClass fc4 = new FirstClass(4);
}

public class InitiationDemo …{
 SecondClass sc1 = new SecondClass();
 …{
  System.out.println(“Hello Java World!”);
 }

public static void main(String[] args) …{
  System.out.println(“Inside main()”);
  SecondClass.fc1.useMethod(100);
  InitiationDemo idObj = new InitiationDemo();
 }
 static SecondClass sc2 = new SecondClass();
}
  运行结果:引用:
FirstClass(1)
FirstClass(2)
FirstClass(3)
SecondClass’s block, this block is not static block.
FirstClass(4)
SecondClass()
Inside main()
useMethod(100)
FirstClass(3)
SecondClass’s block, this block is not static block.
FirstClass(4)
SecondClass()
Hello Java World!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值