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

我们都知道,创建对象是由 new关键字调用构造方法 返回类实例(实际上还可以通过反射来创建实例)。

例如 : Person jack = new Person();

这句话到底做了什么事情呢 ? 其实就是讲对象的初始化过程。

  • 1、 new 用到了Person.class,所以会先找到Person.class文件,并加载到内存中(用到类中的内容类就会被加载)
  • 2、执行该对象的static代码块(静态初始块)。(如果有的话,给Person.class类进行初始化)
  • 3、在堆内存中开辟空间,分配内存地址
  • 4、在堆内存中建立对象特有属性,并进行默认初始化
  • 5、对属性进行显示初始化(声明成员属性并赋值)
  • 6、执行构造块
  • 7、执行构造函数
  • 8、将内存地址赋值给栈内存中的jack变量

如下图:

下面我们来看两个案例

案例一

以下代码的输出结果是什么?


public class B {public static B t1 = new B();public static B t2 = new B();{System.out.println("构造块");}static {System.out.println("静态块");}public static void main(String[] args) {B t = new B();}
}

答案是:

构造块
构造块
静态块
构造块

答案分析:JVM先加载B这个类,初始化静态域(静态变量、静态块和静态方法,按照代码先后顺序初始化),先初始化t1,t2,所以先输出构造块 构造块;然后执行静态块,所以输出静态块;最后执行new B()输出构造块

案例二

一下代码的输出结果是什么?


public class B {static {i = 100;}public static int i = 1;public static void main(String[] args) {System.out.println(i);}
}

答案是:1

答案分析:静态变量是在类初始化时首先被加载的,JVM会去查找类中所有的静态声明,然后分配空间,注意这时候只是完成了地址空间的分配,还没有赋值,之后JVM会根据类中静态赋值(包括静态类赋值和静态块赋值)的先后顺序来执行。对于程序来说,就是先声明了int类型的地址空间,并把地址传递给了i,然后按照类中的先后顺序执行赋值动作,首先执行静态块中i=100,接着执行i=1,那最后的结果就是i=1了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse指定JDK版本启动,解决version XXX of the JVM is not suitable for this product.Version:XXX 问题

问题描述:启动eclipse时,提示version 1.7.0 of the JVM is not suitable for this product.Version:1.8 or greater is required. 原因分析:原因是我的笔记本安装了多个JDK版本,但是现在我的JAVA_HOME配置的是jdk1.7的路径&#x…

【JAVA基础篇】IO流

一、流的概念 “对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务。” ――《Think in Java》 无论是系统、还是语言的设计中IO的设计都是异常复杂的。面临的最大的挑战一般是如何覆盖所有可能的因素,我们不仅仅要考虑文件、…

【JAVA基础篇】运算符

一、表达式 表达式由运算符和操作数组成 例如: 5 num1 num1num2 sumnum1num2 二、运算符分类 算数运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符、位运算符 三、算数运算符 四、赋值运算符 格式:变量表达式 例如:int n3…

a4纸网页打印 table_打印模板不愁人,你还在打印单调的A4纸吗?

软件介绍早在几年前,社会上就已经开始了数字化、无纸化的推广,但是就算再怎么无纸化,纸张还是有它必要的存在,在工作、学习过程中,打印的需求也必不可少的。但是一般的打印都是比较平庸的,要做会议记录&…

上证指数30年k线图_技术预判2020:上证指数要突破3500点才会“井喷”

2019年的行情很快就要收官了,截止目前,上证指数今年的涨幅是20.5%,不过可能有部分投资者今年的收益率还没达到大盘指数的平均水平。不管怎样,今年很快就要翻篇了,关键是看2020年股市能不能迎来更好的行情了。而总结得失…

的优缺点_浅谈桉木家具的优缺点

家具现在的材质是有很多的,木质的,石材的,还有真空充气的,都是很不错的类型。桉木家具是现在很多人都喜欢的一种材质,但是很多人对桉木家具的优缺点不是很清楚,为了能够让大家更加清楚的了解桉木家具&#…

客户说发货慢怎么回复_女生微信说身体不舒服怎么回复关心她?

当你不在女生身边,女生微信给你说身体不舒服,肯定需要说点话来安慰她了。多喝热水肯定是不行了,一点用处都没有,还会让女生觉得你根本不重视她,是在敷衍她,那女生微信说身体不舒服怎么回复关心她呢&#xf…

【算法篇】八种内排序算法

常用的八种内排序算法分别是: 交换排序:冒泡排序、快速排序选择排序:简单选择排序、堆排序插入排序:直接插入排序、希尔排序归并排序基数排序 内排序巧记:选(选择)舰(简单选择)队(堆)的时候脚(交换)毛(冒泡)快(快速)&…

数据分析专题报告范文6篇_小学生看图写话范文:小熊玩跷跷板?(6篇),让孩子参考练习...

​范文01:小熊跷跷板一天,天气晴朗,胖乎乎的小熊和小白兔一起玩跷跷板。小熊一屁股坐在地上,小白兔说:“啊!我有恐高症哇!”小熊说:“我比你重,所以你没有办法把我翘起来…

win10环境安装使用svn客户端和服务端

一、下载安装包 安装包下载传送门http://subversion.apache.org/packages.html 无法下载的童鞋去百度云下载 链接:https://pan.baidu.com/s/1EuGohoZKIPmRvynp5-Subw 提取码:ohna 链接:https://pan.baidu.com/s/1EJrd5DzGCBE4rRfdhuno6Q …

所选元素非联通_非固化橡胶沥青防水涂料与耐根穿刺防水卷材(沥青基)施工要点...

目前,非固化复合耐根穿刺防水卷材在车库顶板的应用逐渐受到客户及用户的认可,也有不少慕名而来的防水从业者打电话来咨询此系统的应用情况及优势。下面就由小编来给大家系统介绍此应用系统的特点吧。01性能优势1.两种材料高度的相容性非固化橡胶沥青防水…

【Java中级篇】动态代理机制

要想搞明白动态代理之前,我们先来了解一下代理是什么意思,先来谈谈设计模式中的代理模式。 什么是代理模式(Proxy) 定义:给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用。 在代理模式中&…

什么叫大数据人物画像_大数据时代,如何构建精准用户画像,直击精细化运营...

移动互联网时代,精细化运营逐渐成为企业发展的重要竞争力,“用户画像”的概念也应运而生。用户画像是指,在大数据时代,企业通过对海量数据信息进行清洗、聚类、分析,将数据抽象成标签,再利用这些标签将用户…

【Java中级篇】使用itextpdf生成PDF

我们可以发现很多求职网站都会将我们录入的信息来生成一个PDF简历文件。所以我这里提供了用itextpdf生成的PDF的代码。 一、步骤 1.1、使用Adobe Acrobat Pro工具编辑PDF模板 1.2、根据PDF模板文件路径创建一个PDFReader对象 1.3、创建一个输出流对象,用于存放生…

adb bugreport保存位置_adb 常用命令---日常提升效率

做为 Android 开发,怎么能不懂点 adb 命令呢?速看~adb 重置、断连的状况这里不说了,先来说一些直观的命令吧1、adb devices查看当前连接的设备如果当前正在连接着设备,那么就可以进行后续的操作了,如果没有&#xff0c…

jsp springmvc 视图解析器_Java面试题整理——SpringMVC

SpringMVC1、什么是SpringMVCSpring MVC是一个MVC的开源框架,Spring MVC Struts2spring,Spring MVC就相当于是Struts2加上Spring的整合,但是这里有一疑惑是Spring MVC和Spring是什么样的关系呢。Spring MVC是Spring的一个后续产品&#xff0…

采集标签_分流器(二):灵活分流能力,数据采集无忧

数据采集分析难怎么办?昨天和大家分享了数据采集分析的最佳助手——分流器的一些基础知识,回顾链接,今天继续和您分享第二篇,带您更深入地了解分流器的强大功能。业务难点在网络安全和数据可视化趋势推动下,企业安全分…

用友邮件撤回怎么操作_用户体验原则——“操作可控”

对于用户的误操作,提供二次确认或者撤销的功能,这样可提高用户的操作可控性。好设计应该是值得信任,也容易被相信的。在要求用户执行某一动作时,尽量帮他们理解为什么这个操作是必要的。每一步都需要借助诚实和清晰的表述来建立信…

蛋白结构建模与优化_最终幻想: 无中生有的蛋白质从头设计

作者简介: 刘源 北京大学化学与分子工程学院/力文所零.导读近几年,蛋白质结构预测领域连续取得重大突破。首先是【AlphaFold】,在可以充分利用共进化信息结合深度神经网络生成空间约束条件并降低相空间的搜索,极大地帮助了蛋白质的结构建模&a…

gcn在图像上的应用_每日摘要|基于CNN 特征的图像卷积网络识别杂草和作物

文章信息标题:CNN feature based graph convolutional network for weed and crop recognition in smart farming期刊:《 Computers and Electronics in Agriculture》第一单位:山东农业大学在线日期:2020-05-13Highlights1.提出了…