关于java对像初始化
2013-04-24 23:09
162 查看
当new一个对像时,
首先肯定是为这个对像分配空间,然后进行隐式或显示的初始化。这些在任何java书肯定都会提到。
但有的时候 ,实际应用中仅知道这些就不够了,现将我的测试总结记录如下 :
当完成了以上的显/隐式初始化后,这时候大家就把关注点放在了构造方法那了。
在执行构造方法其实并非完全顺序执行的。
首先要执行的当然是super (注;任何一个构造都必然在第一行包括super,就是没
有显示的写出,系统也会自动隐式加入),
干完super,完事了。这时并不会继续在这构造方法里执行后面的语句。而是另寻新
欢,去执行所new类里的语句块(即在类中单独用{ 和}这两个东西夹起来的那一部分,
当然,如果没有初夹的这些就肯定没有这一步了)。
好了,现在才真正是要执行刚才提到的那个构造方法里的后面的语句了。
但是,当这个有super的构造被类中的其它构造调用,而且在new时,参数所决定的
构造又是那个要调这个构造的构造。即这个构造的第一行是this,(有this当然就没有
super了。当然,系统在第一行还是会有隐式的super)
现在再看是怎么执行构造的:
首先肯定是调用这个参数所决定的构造。在这起初不要忘了,系统可会隐式的在第
一行加了super。是去执行super了。然后才根据this。去找那个有super构造。
当然,我们现在要看那个有super的构造了。执行顺序就如上所述。
OK了,就回到了这个被决定,即没有super的构造。这时是一种情况了。算是执行
完super了,因为这里没有super。执行类的语句块吗?答案是否定的。真接在构造里执
行后完成的代码。
还有一点也很重要。
假如类里有两个构造方法,而且都没有显示的super。而且构造S1调用了构造S2。
在new时又是用了S1。在执行S1时,首先执行S1里的隐式super。然后执行类里的语句
快,到this,又遇到隐式super了。这回可不执行这个super了。
首先肯定是为这个对像分配空间,然后进行隐式或显示的初始化。这些在任何java书肯定都会提到。
但有的时候 ,实际应用中仅知道这些就不够了,现将我的测试总结记录如下 :
当完成了以上的显/隐式初始化后,这时候大家就把关注点放在了构造方法那了。
在执行构造方法其实并非完全顺序执行的。
首先要执行的当然是super (注;任何一个构造都必然在第一行包括super,就是没
有显示的写出,系统也会自动隐式加入),
干完super,完事了。这时并不会继续在这构造方法里执行后面的语句。而是另寻新
欢,去执行所new类里的语句块(即在类中单独用{ 和}这两个东西夹起来的那一部分,
当然,如果没有初夹的这些就肯定没有这一步了)。
好了,现在才真正是要执行刚才提到的那个构造方法里的后面的语句了。
但是,当这个有super的构造被类中的其它构造调用,而且在new时,参数所决定的
构造又是那个要调这个构造的构造。即这个构造的第一行是this,(有this当然就没有
super了。当然,系统在第一行还是会有隐式的super)
现在再看是怎么执行构造的:
首先肯定是调用这个参数所决定的构造。在这起初不要忘了,系统可会隐式的在第
一行加了super。是去执行super了。然后才根据this。去找那个有super构造。
当然,我们现在要看那个有super的构造了。执行顺序就如上所述。
OK了,就回到了这个被决定,即没有super的构造。这时是一种情况了。算是执行
完super了,因为这里没有super。执行类的语句块吗?答案是否定的。真接在构造里执
行后完成的代码。
还有一点也很重要。
假如类里有两个构造方法,而且都没有显示的super。而且构造S1调用了构造S2。
在new时又是用了S1。在执行S1时,首先执行S1里的隐式super。然后执行类里的语句
快,到this,又遇到隐式super了。这回可不执行这个super了。
相关文章推荐
- 关于java类的初始化顺序的详细讲解(不错)(转)
- 关于java对象初始化的一点有意思的东西
- 关于Java中类在构造对象时的初始化步骤详解
- 关于java继承和变量初始化
- 关于java初始化简介,只有主动调用时才初始化类
- Java进阶--关于初始化的那些事
- 关于Java中类在构造对象时的初始化步骤详解
- 关于java文件加载和初始化顺序问题分析
- Java和guava关于hashmap在初始化的时候最好给个初始容量,避免扩容引起性能问题的探究。
- 关于java的初始化
- JAVA中关于数组初始化的常用方法
- JAVA关于静态变量的初始化需要注意的点
- 关于Java数组声明、创建、初始化的相关介绍
- 关于java StringBuilder初始化的一个坑
- Java 关于含有继承类的成员初始化过程讲解
- java关于局部变量必须初始化赋初值及成员变量不必须该操作的原理浅解析
- 关于Java中的对象数组初始化
- 一个关于java初始化的问题
- 关于Java变量、数组、对象的声明、初始化与访问方式-----《疯狂Java突破程序员基本功的16课》读书笔记----第一章
- 在Java中关于静态变量和全局变量什么时候初始化的问题