Son son = new Son(); 
这句话到底做了什么事情呢? 
1.javac编译.java源文件形成.class字节码文件;
2.new Sub() 对象时,先检查有没有父类,有父类,类加载器(ClassLoader)先将父类的Class文件读入内存,创建一个java.lang.Class对象,然后加载子类,类加载器将子类的Class文件读入内存,创建一个java.lang.Class对象; 
3.先初始化父类的静态属性,再初始化父类的静态代码块; 
4.再初始化子类的静态属性,再初始化子类的静态代码; 
5.在堆内存中分配内存空间,分配内存地址,此时是因为父类的特有属性才在堆内存中为父类对象分配空间。 
6.初始化父类的特有属性。 
7.初始化父类的构造代码块。 
8.初始化父类对象相应的构造方法。 
9.在堆内存中分配内存空间,分配内存地址,此时是因为子类的特有属性才在堆内存中为子类对象分配空间的。 
10.初始化子类的特有属性。 
11.初始化子类的构造代码块。 
12.初始化子类相应的构造方法。 
13.将子类的内存地址赋值给栈中的引用对象。

public class Father {// 静态变量public static String staticField = "父类--静态变量";public String field = "父类--普通变量";// 静态块static {System.out.println(staticField);System.out.println("父类--静态块");}// 初始化块{System.out.println(field);System.out.println("父类--普通块");}// 构造器public Father() {System.out.println("父类--构造器");}
}
public class Son extends Father{// 静态变量public static String staticField = "子类--静态变量";// 变量public String sField = "子类--普通变量";// 静态块static {System.out.println(staticField);System.out.println("子类--静态块");}// 初始化块{System.out.println(sField);System.out.println("子类--普通块");}// 构造器public Son() {System.out.println("子类--构造器");}public static void main(String[] args) {System.out.println("----------------------one--------------------");Son son = new Son();System.out.println("----------------------two-------------------");Son son2 = new Son();}}

java类加载及new对象的过程相关推荐

  1. java方法区对象类型_浅谈Java内存区域与对象创建过程

    一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则 ...

  2. Java 父类子类的对象初始化过程

    转载自 Java 父类子类的对象初始化过程 摘要: Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: ...

  3. java 创建对象的init_Java 对象创建过程。init 方法和 clinit方法。

    Java 对象创建过程 判断是否加载.分配内存(指针碰撞或者空闲链表).初始化为零值.设置对象头(实例是哪个类的实例.类的元信息位置.GC 分代年龄等).init 方法. Java 虚拟机创建一个对象 ...

  4. 【JAVA基础篇】对象初始化过程

    我们都知道,创建对象是由 new关键字调用构造方法 返回类实例(实际上还可以通过反射来创建实例). 例如 : Person jack = new Person(); 这句话到底做了什么事情呢 ? 其实 ...

  5. Java类加载及对象创建过程详解

    类加载过程 类加载的五个过程:加载.验证.准备.解析.初始化. 加载 在加载阶段,虚拟机主要完成三件事: 通过一个类的全限定名来获取定义此类的二进制字节流. 将这个字节流所代表的静态存储结构转化为方法 ...

  6. java初始化实例化_Java对象的创建过程:类的初始化与实例化

    一.Java对象创建时机 我们知道,一个对象在可以被使用之前必须要被正确地实例化.在Java代码中,有很多行为可以引起对象的创建,最为直观的一种就是使用new关键字来调用一个类的构造函数显式地创建对象 ...

  7. 从一道面试题来认识java类加载时机与过程

    转自:http://www.cnblogs.com/javaee6/p/3714716.html?utm_source=tuicool&utm_medium=referral 1  开门见山 ...

  8. 36.JVM内存分哪几个区,每个区的作用是什么、如和判断一个对象是否存活、java垃圾回收机制、垃圾收集的方法有哪些、java类加载过程、类加载机制、双亲委派、Minor GC和Major GC

    36.JVM内存分哪几个区,每个区的作用是什么? 37.如和判断一个对象是否存活?(或者GC对象的判定方法) 38.简述java垃圾回收机制? 39.java中垃圾收集的方法有哪些? 40.java类 ...

  9. java类加载过程_面试官:java类的加载过程

    Java 类加载机制 类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段. 其中类加载过程包括加载.验证.准备.解析和初始化五个阶段. 类的加载 ...

最新文章

  1. java代码段替换,java-片段添加或替换不起作用
  2. 自己写的一个简单的购物车的登录购买
  3. 利用SAP内置功能生成Search Help
  4. 在不进入Guest OS的情况下,取得Guest OS的IP地址
  5. 基于Google测试框架实现自己的测试框架
  6. L1-010 比较大小(8行代码AC!!!)
  7. 用CSS伪类制作一个不断旋转的八卦图?
  8. autohold有什么弊端吗_自动驻车AUTO HOLD有啥作用?怎样使用?
  9. POI2006 ZAB-Frogs
  10. 已激活的windowns、office查看用的密钥
  11. java留言板功能齐全源码_各类Java微信开发框架源码对比(建议收藏)
  12. RTR/SLA 在多ISP环境下下的应用--已经更新,切换后线路恢复时,已能自动恢复
  13. DB2获取CHAR字段数据的数据长度方法
  14. linux内核一直输出系统日志,系统日志出现大量:kernel: printk: xxxx messages suppressed...
  15. uni-app中自定义图表(canvas实现chart图表)开发篇(1)-圆环带进度条
  16. python自动获取号码归属地_Python批量获取并保存手机号归属地和运营商的示例
  17. 《TCP/IP卷》读书笔记
  18. ISO14443-3
  19. MAC下搭建Hexo博客
  20. 微信小程序——登录并保存用户信息到数据库

热门文章

  1. java timezone_Java TimeZone getAvailableIDs()方法与示例
  2. 单位矩阵属性(I ^ k = I)| 使用Python的线性代数
  3. Spring官方推荐的@Transactional还能导致生产事故?
  4. Shiro并发登录人数控制遇到的问题和解决
  5. 机器学习统计学相关书籍
  6. linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级
  7. keep老是显示服务器开小差,nginx+keepalived高可用服务器宕机解决方案
  8. tp获取referer里的域名_thinkPHP的redirect跳转和referer使用的问题
  9. mysql 测试数据的脚本_Mysql脚本 生成测试数据
  10. mysql删除外键_MySQL删除外键定义的方法