`
李灵晖-raylee
  • 浏览: 135868 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-4.7 构造器初始化(1)

 
阅读更多

这一章节我们来聊聊构造器的初始化。

(1)域的初始化在构造器初始化之前

package com.ray.testobject;

public class Test {
	private int id;

	public Test() {
		System.out.println("id:"+id);
		id = 2;
		System.out.println("id:"+id);
	}

	public static void main(String[] args) {
		new Test();
	}
}


输出:

id:0
id:2
从输出的结果可以看见,属性域在构造器之前已经初始化。

(2)初始化的顺序

无论属性域放到哪里,它的初始化都先于构造器的初始化,而且是按照排列的顺序初始化。

package com.ray.testobject;

public class Test {
	private int id;

	public Test() {
		System.out.println("id:" + id);
		System.out.println("name:" + name);
		System.out.println("book:" + book);
		id = 2;
		name = "jack";
		book = new Book();
		System.out.println("id:" + id);
		System.out.println("name:" + name);
		System.out.println("book:" + book);
	}

	private String name;

	private Book book;

	public static void main(String[] args) {
		new Test();
	}
}

class Book {
	public Book() {
		System.out.println("create book");
	}
}


输出:

id:0
name:null
book:null
create book
id:2
name:jack
book:com.ray.testobject.Book@c3c749


从上面的代码可以看出,无论属性域是基本类型还是对象,它们的初始化都在构造器初始化之前,而且是按照排列的顺序初始化。

在构造器初始化之前,id初始化为0,name和book是对象,初始化为null。

我们下面再举一个例子:

package com.ray.testobject;

public class Test {
	public static void main(String[] args) {
		new House();
	}
}

class Window {
	public Window(int id) {
		System.out.println("create window:" + id);
	}
}

class House {
	Window w1 = new Window(1);

	public House() {
		System.out.println("create house");
		w2 = new Window(99);
	}

	Window w2 = new Window(2);
}


输出:

create window:1
create window:2
create house
create window:99

总结:这一章节主要介绍构造器初始化的顺序。

这一章节就到这里,谢谢。

-----------------------------------

目录

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    mchange-commons-java-0.2.11.zip

    在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...

    eclipse-java-2021-12-R-win32-x86_64.zip

    1. **代码编辑器**:Eclipse 提供了一个强大的Java代码编辑器,支持语法高亮、自动完成、错误检查以及重构功能。它可以智能感知上下文并提供有用的提示,帮助开发者提高编码效率。 2. **项目管理**:Eclipse IDE...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    1. **源代码结构**:可能包括多个Java源文件,分别负责网络连接、NTRIP协议解析、数据接收与处理等功能。 2. **AndroidManifest.xml**:定义应用的元数据,如权限、活动、服务等。 3. **build.gradle**:构建脚本,...

    aip-java-sdk-4.2.0

    标题 "aip-java-sdk-4.2.0" 指的是一个针对Android平台的AIP(Artificial Intelligence Platform)SDK的特定版本,版本号为4.2.0。这个SDK是百度公司提供的,用于帮助开发者在Android应用程序中集成和使用百度的各种...

    nextcomps5.9.1_201306 for D7-XE4.7z

    【标题】"nextcomps5.9.1_201306 for D7-XE4.7z"指的是一个专为Delphi开发者设计的组件包,版本号为5.9.1,并且发布于2013年6月。这个组件包是针对Delphi D7(Delphi 7)到XE4(Embarcadero Delphi XE4)版本的,它...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...

    aspose-words-java-23.6-jdk17.jar.zip

    1. **文档创建**:支持从头创建新的文档,或基于现有模板生成文档。 2. **文档读取和解析**:能够打开并读取多种格式的文档,如DOCX、DOC、RTF、PDF、HTML等。 3. **格式转换**:可以在不同文件格式之间进行转换,...

    java-Swing外观包

    Java Swing是Java GUI(图形用户界面)开发的一个重要组件,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing提供了丰富的组件库,允许开发者创建美观且功能丰富的交互式用户界面。在这个...

    java-sdk-master.zip_leancound集成第三方插件_即时通讯

    接下来,根据Leancound的API文档,编写代码来初始化SDK,设置必要的认证信息,然后调用相应的API接口进行操作。 例如,要发送一条文本消息,开发者可能需要如下步骤: 1. 创建一个Leancound客户端对象,设置API密钥...

    java-多文件上传dome

    在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。

    Java---笔试题大全

    6. **Servlet生命周期**:Servlet的生命周期包括初始化(init)、服务(service,通过doGet、doPost等方法处理请求)、销毁(destroy)三个阶段。Servlet在服务器中保持活跃,可以处理多个请求,而CGI每次请求都会...

    java-lib

    "java-lib"是一个与Java编程相关的资源集合,很可能包含了各种常用的Java库,这些库可以帮助开发者在进行Java开发时提高效率,解决特定问题。"java-all-lib"的标签可能表示这个压缩包包含了广泛的Java库,涵盖了多种...

    curso-java-pildorasInf:从头开始学习Java

    【标题】:“curso-java-pildorasInf:从头开始学习Java” 这门“从头开始学习Java”的课程,源自"PillsInformática"的教育资源,旨在为初学者提供全面的Java编程知识。Java是一种广泛使用的面向对象的编程语言,由...

    使用渲染脚本实现模糊视图背景 - Java - 下载.zip

    1. **源代码**:这是实现模糊视图背景的核心部分,可能包含Java类和方法,用于处理图像并应用模糊效果。 2. **示例应用**:可能包含一个简单的Java应用,演示如何使用库来创建模糊视图背景,这对于开发者理解和学习...

    易语言静态变量初始化

    初始化静态变量通常有两种方式:显式初始化和隐式初始化。在声明变量时,我们可以直接赋值,这就是显式初始化。例如: ```易语言 .静态整数 变量名 = 10 ``` 在这里,我们创建了一个名为“变量名”的静态整数变量...

    ks-java-lib:包含 Java 的 KS 库

    【标题】"ks-java-lib:包含 Java 的 KS 库" 提供的是一个专门为 Java 开发者设计的库,它扩展了 Java 的功能,为开发者在处理特定任务时提供了便利。这个库可能包含了丰富的类和方法,旨在简化开发过程,提高代码的...

    java-pdf&word-jar.zip

    1. 创建新文档:从头开始创建Word文档,设置页面布局、字体样式、段落格式等。 2. 编辑现有文档:加载现有的Word文件并修改内容,包括文本、图像、表格、页眉页脚等元素。 3. 转换文档:将Word文档转换为其他格式,...

    数据结构单链表初始化c/c++语言代码实现

    1. 静态初始化:在C++中,可以通过静态初始化创建一个空链表,即在声明时就指定头节点的`next`为`nullptr`。这通常用于声明全局变量或静态局部变量: ```cpp ListNode head = {0, nullptr}; // C++11及以后版本 ...

Global site tag (gtag.js) - Google Analytics