java实例化对象时的执行顺序

java实例化对象时的执行顺序

ID:34707869

大小:57.49 KB

页数:3页

时间:2019-03-09

java实例化对象时的执行顺序_第1页
java实例化对象时的执行顺序_第2页
java实例化对象时的执行顺序_第3页
资源描述:

《java实例化对象时的执行顺序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题      * 几大原则     * 一、静态成员变量(Static)     1、静态成员变量为类变量,所有对象共享同一内存空间 2、静态成员变量的声明和定义仅在首次加载类时执行一次 3、首次加载类时首先对所有静态成员变量根据类型默认赋初值,然后再对有右值的附右值  *二、静态初始块 1、静态初始化块仅在首次加载类时执行一次 ······多个静态成员变量与静态始化快参照出现顺序先后执行······    * 三、动态成员变量   1、动态成员变量定义在每次实例化对象

2、时在构造函数之前执行 *四、动态初始化块 1、动态初始化块在每次实例化对象时在构造函数之前执行 ······多个动态成员变量与动态初始化块参照出现顺序先后执行······  * 总结:总的来说,在不涉及继承的前提下,当首次加载类时,按照如下顺序执行    *  1、按照出现顺序先后执行静态成员变量定义与静态初始化块  *  2、按照出现顺序先后执行动态成员变量定义与动态初始化块   *  3、执行构造函数  *  再次实例化对象时只执行第2、3步即可   * ············成员变量与定义与初始化块先于构造函数执行······

3、···  * 五、当涉及到继承时,按照如下顺序执行   1、执行父类的静态成员变量定义与静态初始化块,执行子类的静态成员变量定义与静态初始化块  2、执行父类的非静态成员变量定义与动态初始化块,执行父类构造方法 3、执行子类的非静态成员变量定义与动态初始化块,执行子类构造方法  * 另:父类构造方法中用到的方法如果已被子类重写,那么在构造子类对象时在调用父类构造函数中使用子类重写的方法 如果一个类的成员变量没有在定义时,系统会给予系统默认的值,有=号的就直接给予右值,系统在给予初值和=号给予值这2中方式,在执行时间上有先后吗?1.pu

4、blic class Test04 ...{  2.    private static Test04 t1 = new Test04();  3.    private static int i1;  4.    private static int i2 = 2;  5.      6.    public Test04()...{  7.        i1++;  8.        i2++;  9.    }  10.      11.    public static void main(String[] args) .

5、..{  12.        Test04 t2 = new Test04();  13.        System.out.println("t2.i1 = " + t2.i1);  14.        System.out.println("t2.i2 = " + t2.i2);  15.    }  16.}  17.执行代码后:  18.t2.i1 = 2  19.t2.i2 = 3  为什么是2和3呢?其实代码的执行顺序是这样的:首先执行给t1,i1,i2分别给予初始值null,0,0,再执行Test04t1=newT

6、est04(),这样i1++,i2++被执行,i1,i2都变为1,执行完毕后接着执行inti1;i1,i2的值仍然是1,1,当执行inti2=2时i2被赋予了值,即i1=1,i2=2;再执行Test04t2=newTest04(),i1,i2再执行++,此时i1=2,i2=3,输出i1,i2,结果就是:t2.i1=2,t2.i2=3。通过上面的代码我们可以认为系统默认值的给予比通过等号的赋予先执行。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。