java,实例初始化块,静态初始化块,clone方法
2011-01-07 11:24
274 查看
今天无聊,看了一下java语言基础知识,对 实例初始化块,静态初始化块 的执行顺便,有了一点了解,便记下来,方便以后查阅。
在一个类定义中,初始化块,就是一块用 { } 大括号括起来的代码段。但“实例初始化块”只是单单的 大括号,当每次创建一个类的实例时,在调用构造方法前,会先执行这段“实例初始化块”,看到这,应该大概明白“实例初始化块”的主要作用了吧?当你在一个类的不同构造方法内,有许多相同的代码段,那么,这些代码就可以单独提取出来,放在一个“实例初始化块里”,那么,每次创建一个对象时,就都会执行一次那代码块。
而相对于“静态初始化块”,其只是在 大括号前面加了个 static,形如 : static{ //--code },但在静态初始化块里,只能允许访问所在类的静态成员(包括方法),当然,也可以在初始化块里声明局部变量(但不能是static类型的)。而静态初始化块的作用就是当JVM在装载类的,你想让它做一些事情,那么,就可以用静态初始化块。
现在说重点:这几者的执行顺序:
(JVM在装载类时)先装载类的静态成员,再执行静态初始化块(同样,当一个类有继承自某类时,则会先装载该父类,那么,父类的装载或执行顺序,也都如句子所述)。
(在创建类的实例时)先执行实例初始化块,再执行构造方法;但对于一棵继承树中,会先调用父类的构造方法,那么其执行顺序也如句子所述。
需要注意的是:
1.当你调用了一个对象的clone方法,结果是:不会再执行初始化块,只会执行构造方法。
2.当一个类有多个初始化块时,其执行的顺序是从上到下执行。
在一个类定义中,初始化块,就是一块用 { } 大括号括起来的代码段。但“实例初始化块”只是单单的 大括号,当每次创建一个类的实例时,在调用构造方法前,会先执行这段“实例初始化块”,看到这,应该大概明白“实例初始化块”的主要作用了吧?当你在一个类的不同构造方法内,有许多相同的代码段,那么,这些代码就可以单独提取出来,放在一个“实例初始化块里”,那么,每次创建一个对象时,就都会执行一次那代码块。
而相对于“静态初始化块”,其只是在 大括号前面加了个 static,形如 : static{ //--code },但在静态初始化块里,只能允许访问所在类的静态成员(包括方法),当然,也可以在初始化块里声明局部变量(但不能是static类型的)。而静态初始化块的作用就是当JVM在装载类的,你想让它做一些事情,那么,就可以用静态初始化块。
现在说重点:这几者的执行顺序:
(JVM在装载类时)先装载类的静态成员,再执行静态初始化块(同样,当一个类有继承自某类时,则会先装载该父类,那么,父类的装载或执行顺序,也都如句子所述)。
(在创建类的实例时)先执行实例初始化块,再执行构造方法;但对于一棵继承树中,会先调用父类的构造方法,那么其执行顺序也如句子所述。
需要注意的是:
1.当你调用了一个对象的clone方法,结果是:不会再执行初始化块,只会执行构造方法。
2.当一个类有多个初始化块时,其执行的顺序是从上到下执行。
相关文章推荐
- java,实例初始化块,静态初始化块,clone方法
- Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)
- 2.24 Java基础总结 ①访问权限②static③静态方法④实例初始化块⑤静态初始化块
- java:静态方法,静态变量,实例方法,实例变量的关系 ----李雪
- Java 静态方法和实例方法的区别
- Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)
- JAVA 开发之用静态方法返回类名的实例详解
- 5.Static ,protect,属性和方法,静态方法(static)和实例方法,JAVA的静态变量、静态方法、静态类
- java静态代码块、初始化块和构造方法的执行顺序
- java 静态方法和实例方法的区别
- java中初始化块、静态初始化块和构造方法
- Java静态初始化,实例初始化以及构造方法
- Java 之单实例与静态方法的工具集
- java 静态方法和实例方法的区别
- java中静态初始化块、初始化块和构造方法的理解
- jAVA中静态初始化块、初始化块和构造方法的理解
- java中 静态成员、实例成员、构造方法在子类和父类中的执行顺序
- java 静态方法和实例方法的区别
- java 静态方法和实例方法的区别
- java中初始化块、静态初始化块和构造方法