对象初始化的过程

对象初始化过程:

  a.在创建类之前,检查类是否已加载(检查硬盘上的class文件,是否已加载到内存中),如果没有加载就先加载父类文件,再加载本类的文件

       Java使用的加载策略:懒惰式加载(按需要加载),用到的时候加载,只加载一次

  b.分配对象的空间,递归分配所有的父类和子类的属性空间

    属性会自动初始化为“0”值

  c.给属性赋值

  d.调用父类的构造方法(默认调用父类的无参构造方法)

  e.调用本类的构造方法

时间: 2024-10-03 10:19:45

对象初始化的过程的相关文章

JAVA 对象初始化的过程

对象初始化的过程例:Student S    =    new Student();1.因为new Student()用到了Student类,所以会把它从硬盘上加载进入内存2.如果有static静态代码块就会随着类的加载而执行,还有静态成员和普通方法也会随着类的加载而被加载3.在堆中开辟空间,分配内存地址4.在堆中建立对象特有属性,并同时对特有属性进行默认初始化5.对属性进行显示初始化6.执行构造代码块,对所有对象进行初始化7.执行对应的构造函数,对对象进行初始化8.将内存地址给S(给栈中的变量

深入理解Java对象的创建过程:类的初始化与实例化

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java对象的创建过程:类的初始化与实例化 - Rico's Blogs - 博客频道 - CSDN.NET Rico's Blogs 潜心修炼,成为一个更好的人. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅

Java对象初始化详解

出处:http://blog.jobbole.com/23939/ 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深 入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本文在最后也会对类的初始化进行介绍,相对于对象初始化来说,类的初始化要相对简单一 些). 1.Java对象何时被初始化 Java对象在其被创建时初始化,在Java代码中,有两种行为可以引起对象的创建.其中比较直观的一种,也就是通常所

Java对象初始化详解(转)

在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本文在最后也会对类的初始化进行介绍,相对于对象初始化来说,类的初始化要相对简单一些). 1.Java对象何时被初始化 Java对象在其被创建时初始化,在Java代码中,有两种行为可以引起对象的创建.其中比较直观的一种,也就是通常所说的显式对象创建,就是通过new关键字来调用一个类的构造函数,通过构造函

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

摘要 Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: static 修饰的模块(static变量和static 块)  ---> 按照代码顺序依次执行. | 实例变量  及非static模块---> 按照代码顺序依次执行. | 构造函数 ---> 执行对应的构造函数. 子类的初始化过程. 父类static修饰的模块 | 子类static修饰模块 | 父类实例变量和非static块 | 父

C#类对象初始化过程

C#类实例的初始化是这样进行的:在调用构造函数的入口处先初始化自身数据成员,若声明字段时显式给出了初始化语句则按初始化语句进行,否则若是基本类型例如int或string则初始化为0或"",若是类则保持为null:若该类含有基类则下一步调用基类构造函数,基类构造函数的执行过程同上,最后调用派生类构造函数的函数体. 以上过程纯属自己的验证加猜测. C#成员初始化列表中只能对base进行初始化. C#的初始化和C++有点不一样啊,似乎还更加隐晦,派生类的成员初始化为什么要比基类更早.感觉越是

对象初始化的完整过程(C#)

1.静态构造函数 在引入本文的主题之前,我们先来铺垫一下吧,看看静态构造函数的概念及用途. C#中允许创建无参数构造函数,该函数仅执行一次.它一般被用来初始化静态字段.CLR不能保证在某个特定时刻执行静态构造函数,同时也不保证不同类的静态构造函数按照什么顺序执行,但保证它仅执行一次,即在应用程序创建该类的第一个实例或访问该类的任何静态成员之前. 注意,静态构造函数不允许有访问修饰符,且不接受任何参数,这是因为其他代码没有权利调用它,它的调用执行总是被CLR接管的!另外,一个类只能有一个静态构造函

JVM内存模型及对象在内存中初始化的过程

JVM内存模型 Java虚拟机所管理的内存区域,也称为运行时数据区,分为以下几个运行时数据区,如图所示 程序计数器:当前程序所执行字节码的行号指示器 程序计数器(Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选 取下一条需要执行的字节码指令,分支.循环.跳转.异常处理.线程恢复等基础功能都需 要依赖这个计数器来完成. Java虚拟机的多线程是是通过线程轮流切

对象初始化

对象初始化过程 第一步:在创建之前,检查是否加载(检查硬盘上的class文件是否加载到内存中,如果没有加载,就先加载父类的文件) 在加载父类的文件,在加载本类的文件中java使用的加载的策略:懒惰式加载(按需加载)用到的时候,只加载一次. 第二步:分配对象的空间.递归分配所有父类和子类的属性空间,属性会自动初始化为"0"的值 第三步:给属性赋值 第四步:调用父类的构造方法(默认调用父类的无参构造方法) 第五步:调用本类的构造方法