黑马程序员_对象初始化过程
2014-03-27 00:35
113 查看
---------------------- android培训 、 java培训
、 期待与您交流! ----------------------
对象初始化过程
1.加载类
2.堆内存分配空间
3.属性进行默认初始化
4.调用构造函数----->1.构造函数默认第一句super(); 2.显示初始化 3.构造代码块初始化
5.调用父类构造函数----->同上
6.属性显示初始化
7.构造代码块初始化
8.构造函数自定义初始化
注意:不创建对象,构造代码块和构造器都不运行。
运行过程--->new 对象 先执行静态代码块--->在执行构造代码块--->再执行构造代码块里面的内容
加载过程--->先加载静态(...)--->构造函数--->在构造函数里加载构造代码块。
结合实例分析:
执行过程解析:
1. 执行静态代码块:静态代码块...i=2
2. 再执行构造代码块:构造代码块...i=2,j=9
3. Demo(int a) 进栈后,第一行this()调用了本类中空参数的构造函数。所以Demo()进栈
4. Demo()第一句默认super(),之后属性显示初始化,构造代码块初始化,以后执行print:无参的构造函数...,j=9
5. Demo()出栈,接着执行Demo(int a):有参的构造函数...i=2,j=9 Demo(int a)出栈 堆内存分配空间释放,等待垃圾回收
6. 执行int a = Demo.i; System.out.println("----");
7. new Demo()调用空参构造函数;
8. 执行构造代码块...i=2,j=9
9.无参的构造函数...,j=9
----------------------
android培训 、 java培训 、 期待与您交流! ----------------------
详细请查看:www.itheima.com
、 期待与您交流! ----------------------
对象初始化过程
1.加载类
2.堆内存分配空间
3.属性进行默认初始化
4.调用构造函数----->1.构造函数默认第一句super(); 2.显示初始化 3.构造代码块初始化
5.调用父类构造函数----->同上
6.属性显示初始化
7.构造代码块初始化
8.构造函数自定义初始化
注意:不创建对象,构造代码块和构造器都不运行。
运行过程--->new 对象 先执行静态代码块--->在执行构造代码块--->再执行构造代码块里面的内容
加载过程--->先加载静态(...)--->构造函数--->在构造函数里加载构造代码块。
结合实例分析:
class Demo { static int i=2;//随着类的加载而加载。加载到方法区中的静态区中。 int j=9;//定义了一个属性,也就是一个成员变量,也叫实例变量。当对象存在时,该变量存在于堆内存的对象中。 static{//静态代码块。随着类的加载而执行。 System.out.println("静态代码块...i="+i); } Demo(int a){//带一个int参数的构造函数。 this();//调用了本类中空参数的构造函数。 System.out.println("有参的构造函数...i="+i+",j="+j); } { //构造代码块,定义在类中的代码块,用于给所有对象进行初始化动作的代码块。 System.out.println("构造代码块...i="+i+",j="+j); } static void show(){//静态函数。函数中没有访问非静态的成员。 System.out.println("静态show方法...i="+i); } Demo(){// 空参数的构造函数。 System.out.println("无参的构造函数..."+",j="+j); } } class Test { public static void main(String[] args) { Demo d = new Demo(1);//通过Day06.class类文件创建了对象。 int a = Demo.i; System.out.println("----"); new Demo(); show(); } public static void show() {} }
执行过程解析:
1. 执行静态代码块:静态代码块...i=2
2. 再执行构造代码块:构造代码块...i=2,j=9
3. Demo(int a) 进栈后,第一行this()调用了本类中空参数的构造函数。所以Demo()进栈
4. Demo()第一句默认super(),之后属性显示初始化,构造代码块初始化,以后执行print:无参的构造函数...,j=9
5. Demo()出栈,接着执行Demo(int a):有参的构造函数...i=2,j=9 Demo(int a)出栈 堆内存分配空间释放,等待垃圾回收
6. 执行int a = Demo.i; System.out.println("----");
7. new Demo()调用空参构造函数;
8. 执行构造代码块...i=2,j=9
9.无参的构造函数...,j=9
----------------------
android培训 、 java培训 、 期待与您交流! ----------------------
详细请查看:www.itheima.com
相关文章推荐
- 黑马程序员-对象的初始化过程
- 黑马程序员--java中父类和子类都有构造方法时,子类对象的初始化过程
- 黑马程序员--03.Java面向对象--04.【对象初始化的过程】【对象调用成员的过程】
- 黑马程序员_Java基础_面向对象(Static的使用、对象初始化和调用成员过程、单例设计模式)
- 黑马程序员-对象的初始化过程详解
- 黑马程序员_对象的初始化过程
- 黑马程序员----对象的初始化过程
- 黑马程序员_day06 面向对象(静态,对象的初始化和对象调用成员过程,单例设计模式)
- 黑马程序员------毕老师视频笔记第六天------面向对象(对象初始化过程)
- 黑马程序员-对象的初始化过程
- 黑马程序员——java第六天:面向对象(静态、帮助文档、对象初始化过程、单例)
- 黑马程序员--面向对象(二)static关键字、静态代码块、对象的初始化过程
- 黑马程序员:Java对象的初始化过程
- 黑马程序员--03.Java面向对象--05.子类对象初始化的过程【个人总结】
- 黑马程序员------面向对象(No.4)(对象初始化过程、单例、继承概述、重写)
- 黑马程序员-面向对象-06天-4(对象初始化过程)
- 解析 Java 类和对象的初始化过程
- [转]JAVA中对象创建和初始化过程
- 黑马程序员------OC 面向对象和面向过程思想(基础)
- 初始化Java对象的详细过程