Java对象初始化代码详解:实例变量和类变量的初始化过程
161 浏览量
更新于2024-09-02
收藏 79KB PDF 举报
Java 对象初始化代码详解
Java 对象初始化是 Java 编程语言中一个重要的概念,它涉及到实例变量的初始化、类变量的初始化、final 关键字对初始化的影响等方面。在本文中,我们将详细介绍 Java 对象初始化的过程,包括实例变量的初始化、类变量的初始化、final 关键字对初始化的影响等。
一、实例变量的初始化
实例变量的初始化是 Java 对象初始化的重要一步。在实例变量的初始化过程中,Java 解释器首先会找到相应的类文件(如 Dog.class),然后执行所有的静态初始化模块。静态初始化仅发生一次,即在 Class 对象首次载入的时候。
创建一个新的对象时,Java 解释器会在内存堆(Heap)中分配足够多的存储空间,并将所有基本类型(Primitive)设为默认值(如数字为 0,boolean 和 char 为等价设置)。然后,所有成员字段定义时发生的初始化都会执行,最后执行构造函数。
实例变量的初始化有三种方式:
1. 定义实例变量时指定初始值
2. 非静态初始化块中对实例变量进行初始化
3. 构造器中对实例变量进行初始化
在 new 对象初始化时,①②要先于③执行,而①②的顺序则按照它们在源代码中定义的顺序来执行。
二、类变量的初始化
类变量的初始化是 Java 对象初始化的另一个重要方面。在类变量的初始化过程中,Java 解释器会执行所有的静态初始化模块,这些模块仅发生一次,即在 Class 对象首次载入的时候。
三、final 关键字对初始化的影响
final 关键字对初始化的影响是 Java 对象初始化的重要一点。当实例变量使用了 final 关键字修饰时,如果是在定义该 final 实例变量时直接指定初始值进行的初始化(第①种方式),那么该变量的初始值在编译时就被确定下来,那么该 final 变量就类似于“宏变量”,相当于 JAVA 中的直接常量。
例如,以下代码中,str1 和 str2 的初始值在编译时就被确定下来:
public class Test {
public static void main(String[] args) {
final String str1 = "HelloWorld";
final String str2 = "Hello" + "World";
System.out.println(str1 == str2); // true
final String str3 = "Hello" + String.valueOf("World");
System.out.println(str3 == str1); // false
}
}
在上面的代码中,str1 和 str2 的初始值在编译时就被确定下来,因此它们可以被认为是“宏变量”,相当于 JAVA 中的直接常量。然而,str3 的初始值是在运行时确定的,因此它不能被认为是“宏变量”。
Java 对象初始化是一个复杂的过程,涉及到实例变量的初始化、类变量的初始化、final 关键字对初始化的影响等方面。了解 Java 对象初始化的过程有助于我们更好地理解 Java 编程语言,并编写更加高效、可靠的程序。
2012-02-27 上传
2014-08-26 上传
2020-08-31 上传
2020-08-30 上传
2020-08-30 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38565818
- 粉丝: 3
- 资源: 956
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库