- class Demo {
- {
- System.out.println("1.构造块。");// 定义构造块
- }
- static {
- System.out.println("0.静态代码块。");// 定义静态代码块
- }
- public Demo() {
- System.out.println("2.构造方法。");// 定义构造方法
- }
- }
- class CodeDemo {
- static {
- System.out.println("在main方法中定义的静态代码块。");// 在main方法中定义静态代码块
- }
- public static void main(String[] args) {
- new Demo();// 实例化对象
- new Demo();// 实例化对象
- new Demo();// 实例化对象
- }
- }
- 这道题是前面的一个同学的题,由他的这道题我先到的新的问题和思考。
- 上面代码的运行结果是:
- 在main方法中定义的静态代码块。
- 0.静态代码块。
- 1.构造块。
- 2.构造方法。
- 1.构造块。
- 2.构造方法。
- 1.构造块。
- 2.构造方法。
- 说明先执行静态代码块,再执行构造块,再执行构造方法。
- 关键是:<font color="Red">静态代码块只执行一次,这样的话,我们在做单例模式的时候,就可以考虑把初始化单列的代码放在静态代码块中了</font>。这样就可以更加安全,但是我又再想,这个东西和锁有关系吗?并且大家认为,把初始化单例放在静态代码块中好不好?有点小迷惑。
复制代码 |