静态代码块、构造代码块、构造函数

来源:互联网 发布:口腔医学网络教育 编辑:程序博客网 时间:2024/06/05 01:01

原址:http://wiki.jikexueyuan.com/project/java-enhancement/java-twelve.html

package com.tutorialspoint;public class Test {        /**         * 构造代码         */        {            System.out.println("执行构造代码块...");            System.out.println("222222");        }        /**         * 无参构造函数         */        public Test(){            System.out.println("执行无参构造函数...");        }        /**         * 有参构造函数         * @param id  id         */        public Test(String id){            System.out.println("执行有参构造函数...");        }                public static void main(String[] args) {            new Test();            System.out.println("----------------");            new Test("1");        }    }

Test.class

编译后的:

public class Test{  public Test()  {    System.out.println("执行构造代码块...");    System.out.println("222222");    System.out.println("执行无参构造函数...");  }  public Test(String id)  {    System.out.println("执行构造代码块...");    System.out.println("222222");    System.out.println("执行有参构造函数...");  }  public static void main(String[] args) {    new Test();    System.out.println("----------------");    new Test("1");  }}

结论1:

从上面的运行结果可以看出在 new 一个对象的时候总是先执行构造代码,再执行构造函数,但是有一点需要注意构造代码不是在构造函数之前运行的,它是依托构造函数执行的

五、 静态代码块、构造代码块、构造函数执行顺序

从词面上我们就可以看出他们的区别。

1)静态代码块,静态,其作用级别为类,

2)构造代码块、构造函数,构造,其作用级别为对象。

1、静态代码块,它是随着类的加载而被执行,只要类被加载了就会执行,而且只会加载一次,主要用于给类进行初始化。

2、构造代码块,每创建一个对象时就会执行一次,且优先于构造函数,主要用于初始化不同对象共性的初始化内容和初始化实例环境。

3、构造函数,每创建一个对象时就会执行一次。同时构造函数是给特定对象进行初始化,而构造代码是给所有对象进行初始化,作用区域不同。

通过上面的分析,他们三者的执行顺序应该为:静态代码块 > 构造代码块 > 构造函数。

package com.tutorialspoint;public class Test { /**     * 静态代码块     */    static{        System.out.println("执行静态代码块开始");        System.out.println("==============");        System.out.println("执行静态代码块结束");    }        /**         * 构造代码         */        {            System.out.println("执行构造代码块...");        }        /**         * 无参构造函数         */        public Test(){            System.out.println("执行无参构造函数...");        }        /**         * 有参构造函数         * @param id  id         */        public Test(String id){            System.out.println("执行有参构造函数...");        }                public static void main(String[] args) {            new Test();            System.out.println("----------------");            new Test("1");        }    }
执行静态代码块开始==============执行静态代码块结束执行构造代码块...执行无参构造函数...----------------执行构造代码块...执行有参构造函数...



原创粉丝点击