引自:Thinking in Java
成员初始化:类的每个基本类型以及引用类型都会有一个初值,但是对于方法的局部变量,所有变量在使用之前如果得不到恰当的初始化,java会出现编译时错误。
初始化顺序:在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量散布于方法定义之间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
总结一下对象的创建过程,假设有一个名为Dog的类:
1.即使没有显示地使用static关键字,构造器实际也是静态方法。因此首次创建类型为Dog的对象时(构造器可以看成静态方法),或者Dog类的静态方法/静态域首次被访问时,Java解释器必须查找类路径,以定位Dog.class文件。
2.然后载入Dog.class(这次创建一个Class对象)。有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。
3.当用new Dog()创建对象时,首先将在堆上为Dog对象分配足够的存储空间。
4.这块存储空间会被清零,这就自动地将Dog对象中的所有基本数据都设置成了默认值(对数字来说就是0,对布尔型和字符型也相同),而引用则被设置成了null.
5.执行所有出现于字段定义处的初始化动作。
6.执行构造器。
分享到:
相关推荐
本篇将详细讲解与"4.5"TFT初始化相关的知识,特别是针对9481、ILI9338型号的TFT屏幕,以及TFT初始化指令。 首先,"4.5"指的是屏幕的对角线尺寸,这通常用于描述手机或平板电脑等设备的显示屏大小。4.5英寸的TFT屏幕...
标题中的“SIN初始化_混沌初始化”指的是使用正弦混沌映射对粒子群进行初始位置的设置。混沌系统具有高度的敏感性,使得初始条件的微小差异可能导致显著不同的结果,这为种群的多样性和探索性提供了可能。SIN映射是...
静态初始化发生在程序加载时,主要针对那些可以用常量表达的初始化,例如零初始化(zero initialization)和常量初始化(const initialization)。零初始化的变量通常存放在BSS段,而常量初始化的变量则位于数据段,...
本文将深入探讨结构的两种初始化方式:部分初始化和完全初始化,并通过实例分析其特点和注意事项。 首先,我们来看部分初始化。部分初始化是指在创建结构实例时只给一部分字段赋值,而其余字段保持默认状态。以下是...
### PCI设备BAR空间的初始化详解 #### 一、引言 在现代计算机系统中,PCI(Peripheral Component Interconnect,外围部件互连)总线是一种重要的高速扩展总线标准,广泛应用于连接各种硬件设备,如显卡、声卡、...
Java 数组初始化详解 Java 数组初始化是 Java 编程语言中的一种基本概念,它允许开发者创建和初始化数组,以便于存储和操作数据。在本文中,我们将对 Java 数组初始化进行详细的介绍,包括一维数组和二维数组的声明...
我们可以在业务层自己控制 A 和 B 的初始化顺序,在 A 中设置一个“是否初始化的”标记,B 初始化前检测 A 是否得以初始化,如果没有则调用 A 的初始化方法,所谓的 check-and-act。 这种方法的优点是可以做到 lazy...
在使用8251进行通信前,必须对其进行初始化,设置其工作模式和参数。 初始化过程主要涉及以下几个方面: 1. **配置控制寄存器**:8251有两个控制寄存器,即命令寄存器(Command Register, CR)和状态寄存器...
### FANUC机器人初始化系统的基本方法和步骤 #### 一、引言 FANUC机器人的广泛应用使得其系统的维护与管理变得尤为重要。其中,初始化作为系统恢复的重要手段之一,不仅能够帮助用户解决软件故障问题,还能确保...
标题中的“应力初始化”是指在进行LS-DYNA3D模拟时,如何设定初始条件中的应力状态。在进行复杂的工程问题模拟时,正确设置初始应力对于获取准确的计算结果至关重要。 应力初始化通常涉及到以下几个关键知识点: 1...
### C++构造函数初始化列表详解 在C++编程语言中,构造函数是对象生命周期开始时自动调用的特殊成员函数,用于初始化对象的状态。构造函数初始化列表是C++中一个非常重要的特性,它允许程序员在对象创建时直接对类...
比赛工程2,初始化上行至10层;电梯PLC;好像是六部十层;;比赛工程2,初始化上行至10层;电梯PLC;好像是六部十层;;比赛工程2,初始化上行至10层;电梯PLC;好像是六部十层;;比赛工程2,初始化上行至10层;电梯PLC...
定义没有初始化式的变量时,系统有时候会帮我们初始化变量。 系统如何初始化取决于变量的类型以及变量定义的位置。 内置类型变量是否自动初始化取决于变量定义的位置。 函数体外定义的变量初始成0;函数体内定义的...
Revit外部工具无法初始化附加模块的解决方法 大家在安装完Revit或者卸载后重装Revit时是否遇到外部工具无法初始化附加模块的问题,每次打开不停的弹出对话框,烦得要死。 无法初始化附加模块“CollaborateDB”,...
数据开发-数据初始化方案是数据开发中一个重要的步骤,旨在确保订单中心项目顺利上线,把系统及各模块需要的基础信息提前按计划准备、完善。在数据初始化过程中,需要初始化的基础信息可以分为四大类:系统元数据、...
CSS样式初始化是开发过程中一个重要的步骤,它旨在消除浏览器之间的默认样式差异,确保网页在不同浏览器上的一致性表现。"commonInitialize.css"就是这样一个专门用于全局CSS样式初始化的文件。 首先,我们来理解...
液晶显示器单片机初始化程序是实现微控制器与液晶显示器(LCD)之间通信的关键步骤,确保LCD能够正确地显示数据。本文将深入解析标题、描述、标签以及部分内容中提及的知识点,帮助读者理解单片机控制的液晶显示器...
数组的初始化是指在声明数组时为它分配内存并赋予初始值的过程。在VB中,有多种方法可以初始化数组,本篇文章将深入探讨这些方法,并通过实例来说明。 ### 1. 静态初始化 静态初始化是在声明数组的同时为每个元素...
### ADS环境下ARM系统两种初始化方式分析 #### 一、引言 随着32位芯片制造技术的不断发展和完善,越来越多的工程师开始关注32位微控制器的应用。ARM架构因其优秀的性能和广泛的应用,在32位微控制器领域占据了主导...
初始化结构体时,通常有两种方式:构造函数初始化(如果结构体是类)和成员初始化列表。由于 `struct` 在C++中等同于类,但不支持构造函数,所以我们必须使用成员初始化列表。例如,对于 `PhotoInfo` 结构体,其初始...