今天学妹问我Java对象到底是怎么创建的?那我必须要从底层给学妹讲清楚呀!

一、 构造器
JAVA中构造器也称为构造方法,它用于对象的初始化。

构造器分为

  • 无参构造器
  • 有参构造器

构造器的一些特点

  • 无参构造器只能有一个,有参构造器可以根据需求设置多个(构造器的重载)。
  • 当你没有指定构造器时,则编译器会自动定义一个无参构造器。
  • Java通过new关键字来调用构造器。
  • 构造器有返回值,但是在构造器中不能使用return关键字来指定返回值。
  • 构造器的方法名必须和类名一致

二、 对象创建过程
Java通过new关键字来调用构造方法,构造方法返回该类对象,但是并不是说对象完全由构造器来创建的。Java内部细节,想了解可继续往下看;
创建一个对象一般分为四步:

  • 1、分配对象空间,并将对象的成员变量初始化为0或空(数值型变量为0,字符型为空)。
  • 2、执行属性值的显示初始化。(显示初始化就是在声明变量时直接赋值的操作)
  • 3、执行构造方法。
  • 4、返回对象地址给相关变量。(对象在堆中创建好,会返回给栈中的变量,如下图)。4不懂可看我的一篇文章: Java面向对象内存分析.

JAVA构造器及对象创建的过程相关推荐

  1. Java对象创建的过程及对象的内存布局与访问定位

    这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等. 1.对象创建的过程 1.类加载.解析.初始化:虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符 ...

  2. 解析 Java 类和对象的初始化过程

    跳转到主要内容 中国 [ 选择 ] dW 全部内容--------------  AIX and UNIX  Info Mgmt  Lotus  Rational  WebSphere-------- ...

  3. (1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态

    1.访问控制(笔试题) 1.1 常用的访问控制符 public - 公有的 protected - 保护的 啥也不写 - 默认的 private - 私有的 1.2 访问控制符的比较 访问控制符 访问 ...

  4. Java虚拟机:对象创建过程与类加载机制、双亲委派模型

    一.对象的创建过程: 1.对象的创建过程: 对象的创建过程一般是从 new 指令(JVM层面)开始的,整个创建过程如下: (1)首先检查 new 指令的参数是否能在常量池中定位到一个类的符号引用: ( ...

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

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

  6. 对象创建的过程细节是怎样的?一起来探讨内存变化细节

    目录 一.对象的实例化 对象创建的几种方式 对象创建的步骤 二.对象的内存布局 三.对象的访问定位 JVM是如何通过栈帧中的对象引用访问到其内部的对象实例呢? 1.句柄访问 2.直接指针(HotSpo ...

  7. 解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 问题引入 近日我在调试一个枚举类型的解析器程序,该解析器是将数据库内一万多条枚举代码装载到缓存中,为了实现快速定位枚举代码 ...

  8. 对象创建的过程 java_Java 对象创建过程

    构造器是静态方法. 1. Java中,用new()创建一个对象的时候,Java虚拟机首先去检查new指令的参数是否能够在方法区的常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载. ...

  9. 解析 Java 类和对象的初始化过程(zhuang张 国建 (guojian.zhang@gmail

    [url]http://www.blogjava.net/rendong/default.html?page=2[/url]

最新文章

  1. 【imx6】/dev中fb和video的对应关系
  2. pyton BeautifulSoup中文API
  3. Linux 学习笔记_10_Shell编程_2_Shell编程语法(三)
  4. java连接Redis数据库
  5. XML万能数据库设计
  6. oracle坏块修复
  7. 正确使用IDisposable接口
  8. 分享“消防图纸”识图方法,让你一眼秒懂!
  9. visio画图复制粘贴到word_用VISIO画图 复制完之后粘贴到word中为什么只显示下面一部分?...
  10. 联合概率分布、边缘概率分布
  11. c语言vc绘图,VC++绘图编程教程
  12. 纳什均衡C++简单实现
  13. 台式机和台式计算机的区别,台式机和一体机区别是什么
  14. ZYNQ+NVMe 小型化全国产存储方案
  15. Python3版本Django实现免费手机验证码注册
  16. RBF论ADSE(千万别学英语)之合理性
  17. 布赖恩·克尼根位计数算法说明及简单使用
  18. 5G新型网络架构关键技术 — 无线mesh与动态自组网络和无线资源调度与共享
  19. signature=f380c172efecdd0f7b9329d16d09ca45,Virtual Identity Signs in Online Communication
  20. testufo测试刷新率测试_高刷屏比低刷屏强多少?用UFO Test工具一目了然

热门文章

  1. SSH项目开发(CRM客户关系管理系统)
  2. 自己实现的printf函数
  3. Unity3D Plugin xxx is used from several locations 错误
  4. 马云创办的「中国黄页」上线 | 历史上的今天
  5. 洋哥也曾有很多悲惨经历
  6. Java设计模式——工厂模式讲解以及在JDK中源码分析
  7. MYSQL中修改表的字符集
  8. 老男孩培训 | 0基础转行,大专学历,工资翻3倍,他只用了5个月!
  9. [教学小东西][游戏][js] 修改js游戏的属性
  10. C语言实战 - 贪吃蛇(图形界面)