文档章节

Java初始化块

西红柿的眼泪
 西红柿的眼泪
发布于 2016/07/06 21:10
字数 716
阅读 10
收藏 0

java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个Java对象的状态初始化,然后将Java对象返回给程序,从而让java对象的信息更加完整。与构造器作用非常相似的是初始化块,它也可以对java对象进行初始化操作。

1.初始化块是java类里面的出现的第四种成员(成员变量、方法、构造器),一个类里面可以有多个初始化块,相同类型的初始化之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。初始代码的结构语法为:[修饰符]{ 初始化块可执行的代码}  初始化块中的修饰符只能是static,使用static修饰的初始化块别称伪静态初始化块,初始化块内可以执行的代码可以定义的局部变量、调用的其他的方法、以及使用的分支语句或者循环语句等。初始化块虽然也是java类的一种成员变量,但是没有名字,也没有标识符,因此无法通过类、对象来调用初始化块。初始化块只能在创建java对象时隐式执行,而且在执行构造器之前执行。

2.初始化块和构造器,从某种程度上来看,初始化块是构造器的补充,初始化块总是在构造器执行前执行的。与构造器不同的是,初始化块是一段固定的代码,他不接受任何参数。因此初始快对同一个类的所有对象所进行的初始化处理完全相同。实际上初始化块是一个假象,使用javac命令编译java类后,该java类中的初始化块会消失,初始化块代码还会被还原到每个父类构造器里面,且位于构造器所有代码之前。与构造器类似,创建一个java对象时,也要先执行父类的初始化块,直到追溯到java.lang.Object类的初始化。

3.静态初始化块,如果定义初始快使用了static修饰符时,则这个初始化块就变成了静态初始块,也成类初始化块,普通初始化块负责对对象执行初始化,而类初始化块则负责对类进行初始化。静态初始块是与类相关的,系统将在类初始化阶段执行静态初始化块,因此静态初始化块总是比普通初始化块先执行的。和普通初始化块一样,系统类初始化阶段也要追溯到java.lang.Object类的静态代码块。

© 著作权归作者所有

上一篇: Java增强的包装类
下一篇: Java继承与组合
西红柿的眼泪
粉丝 4
博文 48
码字总数 39713
作品 0
郑州
程序员
私信 提问
Java 语言中的实例初始化块 ( IIB) 详解

在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB )。不过我觉得介绍的有点简单了,于是,再写一篇文章详细介绍下吧。 Java 语言中,存在三种操作:方法 ...

beves
2018/10/14
0
0
两道面试题,带你透彻解析Java类加载机制

  在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题:   class Grandpa { static { System.out.println("爷爷在静态代码块"); } } class Father extends Gran...

java进阶架构师
2018/12/06
0
0
两道面试题,带你解析Java类加载机制

文章首发于【博客园-陈树义】,点击跳转到原文《两道面试题,带你解析Java类加载机制》 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: 请写出最后的输出字符...

陈树义
2018/06/12
0
0
JAVA & .NET创建对象构造函数调用顺序

JAVA & .NET创建对象构造函数调用顺序 JAVA 定义Person类 定义Chinese类 创建Chinese类实例 输出结果如下: 执行顺序为: 基类静态初始化块——当前类静态初始化块——基类初始化块——基类构...

雪飞鸿
02/24
0
0
JVM系列第7讲:JVM 类加载机制

当 Java 虚拟机将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析、运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制。JVM 虚拟机执行 class 字节码的过...

陈树义
2018/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

趣谈预留实例券,一文搞懂云上省钱最新玩法

摘要: 一文搞懂时髦的预留实例券(RI) ECS近期推出了预留实例券(Reserved Instances),简称RI,这东西很cool,今天我们聊聊这个。 首先这篇Blog不是文档,读完后想详细了解文档的朋友请点...

zhaowei121
5分钟前
0
0
js 将json字符串转换为json对象的方法解析

js 将json字符串转换为json对象的方法解析 将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之...

城市之雾
5分钟前
0
0
国外青少年最喜爱的聊天 app,竟然是 Google Docs

简评: 这还真不是标题党,Google Docs 的协作中内置了实时聊天的功能,也可以进行 comments,颇有种现代「传纸条」的既视感。其实国内的石墨文档、腾讯文档等协作工具也有类似的效果,本文很...

极光推送
10分钟前
0
0
用zuul将微服务的多个swagger api文档聚合成一个文档

1.在每个服务的pom中添加以下依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId></dependency> 注意:仅仅需要添加这个就行。zuul负......

xtof
11分钟前
0
0
为什么取不到metamask的账号?

当你使用Metamask测试以太坊DApp时,如果出现莫名其妙的问题,检查一下web3.eth.accounts是否可以获取到账户,如果不能获取的话,那么最大的可能是你使用了新版的Metamask,并且默认启用了隐...

汇智网教程
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部