JAVA构造器及对象创建的过程
今天学妹问我Java对象到底是怎么创建的?那我必须要从底层给学妹讲清楚呀!
一、 构造器
JAVA中构造器也称为构造方法,它用于对象的初始化。
构造器分为:
- 无参构造器
- 有参构造器
构造器的一些特点:
- 无参构造器只能有一个,有参构造器可以根据需求设置多个(构造器的重载)。
- 当你没有指定构造器时,则编译器会自动定义一个无参构造器。
- Java通过new关键字来调用构造器。
- 构造器有返回值,但是在构造器中不能使用return关键字来指定返回值。
- 构造器的方法名必须和类名一致
二、 对象创建过程
Java通过new关键字来调用构造方法,构造方法返回该类对象,但是并不是说对象完全由构造器来创建的。Java内部细节,想了解可继续往下看;
创建一个对象一般分为四步:
- 1、分配对象空间,并将对象的成员变量初始化为0或空(数值型变量为0,字符型为空)。
- 2、执行属性值的显示初始化。(显示初始化就是在声明变量时直接赋值的操作)
- 3、执行构造方法。
- 4、返回对象地址给相关变量。(对象在堆中创建好,会返回给栈中的变量,如下图)。4不懂可看我的一篇文章: Java面向对象内存分析.
JAVA构造器及对象创建的过程相关推荐
- Java对象创建的过程及对象的内存布局与访问定位
这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等. 1.对象创建的过程 1.类加载.解析.初始化:虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符 ...
- 解析 Java 类和对象的初始化过程
跳转到主要内容 中国 [ 选择 ] dW 全部内容-------------- AIX and UNIX Info Mgmt Lotus Rational WebSphere-------- ...
- (1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态
1.访问控制(笔试题) 1.1 常用的访问控制符 public - 公有的 protected - 保护的 啥也不写 - 默认的 private - 私有的 1.2 访问控制符的比较 访问控制符 访问 ...
- Java虚拟机:对象创建过程与类加载机制、双亲委派模型
一.对象的创建过程: 1.对象的创建过程: 对象的创建过程一般是从 new 指令(JVM层面)开始的,整个创建过程如下: (1)首先检查 new 指令的参数是否能在常量池中定位到一个类的符号引用: ( ...
- Java类加载及对象创建过程详解
类加载过程 类加载的五个过程:加载.验证.准备.解析.初始化. 加载 在加载阶段,虚拟机主要完成三件事: 通过一个类的全限定名来获取定义此类的二进制字节流. 将这个字节流所代表的静态存储结构转化为方法 ...
- 对象创建的过程细节是怎样的?一起来探讨内存变化细节
目录 一.对象的实例化 对象创建的几种方式 对象创建的步骤 二.对象的内存布局 三.对象的访问定位 JVM是如何通过栈帧中的对象引用访问到其内部的对象实例呢? 1.句柄访问 2.直接指针(HotSpo ...
- 解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起
在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 问题引入 近日我在调试一个枚举类型的解析器程序,该解析器是将数据库内一万多条枚举代码装载到缓存中,为了实现快速定位枚举代码 ...
- 对象创建的过程 java_Java 对象创建过程
构造器是静态方法. 1. Java中,用new()创建一个对象的时候,Java虚拟机首先去检查new指令的参数是否能够在方法区的常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载. ...
- 解析 Java 类和对象的初始化过程(zhuang张 国建 (guojian.zhang@gmail
[url]http://www.blogjava.net/rendong/default.html?page=2[/url]
最新文章
- 【imx6】/dev中fb和video的对应关系
- pyton BeautifulSoup中文API
- Linux 学习笔记_10_Shell编程_2_Shell编程语法(三)
- java连接Redis数据库
- XML万能数据库设计
- oracle坏块修复
- 正确使用IDisposable接口
- 分享“消防图纸”识图方法,让你一眼秒懂!
- visio画图复制粘贴到word_用VISIO画图 复制完之后粘贴到word中为什么只显示下面一部分?...
- 联合概率分布、边缘概率分布
- c语言vc绘图,VC++绘图编程教程
- 纳什均衡C++简单实现
- 台式机和台式计算机的区别,台式机和一体机区别是什么
- ZYNQ+NVMe 小型化全国产存储方案
- Python3版本Django实现免费手机验证码注册
- RBF论ADSE(千万别学英语)之合理性
- 布赖恩·克尼根位计数算法说明及简单使用
- 5G新型网络架构关键技术 — 无线mesh与动态自组网络和无线资源调度与共享
- signature=f380c172efecdd0f7b9329d16d09ca45,Virtual Identity Signs in Online Communication
- testufo测试刷新率测试_高刷屏比低刷屏强多少?用UFO Test工具一目了然