java对象初初始化过程
来源:互联网 发布:淘宝代练剑三 编辑:程序博客网 时间:2024/05/19 02:41
我是新人如有错误请多指教!
首先来说下内存里面的情况,java在分配内存,分为寄存器:和cpu打交道的,本机方法栈:主要是使用windows或linux的系统文件的,方法区:这个地方是存储.class文件的地方还包括静态方法和常量池的,剩下的就是我们最重要的两部分,,堆和栈,堆:保存对象的实例对象,而栈:是运行程序过程的实现地方。
首先java从main方法开始执行程序,将加载main方法到栈中,然后执行main方法里面的,如果遇到实例化对象的话,会在堆中将对象的具体的成员变量存储起来,没有初始化的话,初始化成员变量的默认值。然后执行对象的构造方法,在这个时候,如果这个对象的类有父类的话,也要执行父类的构造方法,这之间也要执行代码块,先执行父类的静态的,再执行子类的静态的代码块,执行父类一般代码块,再执行子类一般的代码块,在 执行父类的构造方法,再执行子类的构造方法。最后将对象的地址值返回给对象声明。简洁如下:
Test test= new Test();
1.在内存中栈中开辟一块地方将test开出来
2.在堆中开辟出Test类的地方
3.执行父类的静态的代码块(没有跳过)
4.执行子类的静态代码块(没有跳过)
5.执行父类的一般代码块(没有跳过)
6.初始化父类;
7.执行父类的构造方法
初始化子类;
8.执行子类的构造方法
9.将堆中生成的对象地址值,返还给栈中的test变量
10.等待虚拟机自动销毁堆中的对象
典型代码:
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
Z() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
输出为 YXYZ
- java对象初初始化过程
- java对象初始化过程
- java 对象初始化过程
- java对象初始化过程
- Java 对象初始化过程
- java对象初始化过程
- Java 对象初始化过程
- java对象初始化过程
- JAVA对象的初始化过程
- java对象的初始化过程
- java对象如何初始化过程
- JAVA 的对象初始化过程
- JAVA 对象的初始化过程
- Java对象初始化过程图
- JAVA对象的初始化过程
- Java对象初始化的过程
- 对象的初始化过程-java
- java类对象初始化过程
- SURF特征提取与匹配实践
- C++学习 boost学习之-BOOST_STATIC_ASSERT
- Android Drawable Resource学习(六)、LevelListDrawable
- Oracle DBV工具
- 各国语言缩写列表,各国语言缩写-各国语言简称,世界各国域名缩写
- java对象初初始化过程
- Chapte10. Objective-C learning note 3. class summarize
- git查看某个文件的修改历史
- C++学习 boost学习之-lexical_cast
- linux下比较2个文件
- android 应用程序跳转到Settings的各个界面
- 1005. 继续(3n+1)猜想 (25)
- android shape的使用
- Happy Number