`
songzhan
  • 浏览: 248860 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

4月30 -- java基础(Java对象初始化顺序)

阅读更多

 1. 使用new新建对象时,初始化顺序为:静态变量>成员变量>构造方法。 静态初始化块以静态变量对待
        2. 建立类的Class对象,但没有执行new时(如访问任何静态变量、或者调用静态方法、或者调用Class.forName方法等。使用Class<A> a = A.class则不会触发)都会进行静态变量的初始化。此时成员变量、构造方法未初始化。静态变量只会被初始化一次。
        3. 同种变量的初始化,按照代码中的书写顺序进行,无论变量声明在类头、方法之间、类尾。
        4. 执行构造方法时,从祖先至子孙依次进行。“创建过程是由基类'向外'扩散的”。那么如果new一个子类对象,子类构造方法中的代码应在父类静态变量>父类成员变量>父类构造方法>子类静态变量>子类成员变量之后执行。

假设有个名为Dog的类:

        1. 当首次创建类型为Dog的对象时(构造器可以看成静态方法),或者Dog类的静态方法/静态域首次被访问时,Java解释器必须查找类路径,以定位Dog.class文件。

        2. 然后载入Dog.class(这将创建一个Class对象), 有关静态初始化的动作都会执行。因此,静态初始化只在Class对象首次加载的时候执行一次。

        3. 当你用new Dog()创建对象的时候,首先在堆上为Dog对象分配足够高的存储空间。

        4. 这块存储空间会被清零,这就自动的将Dog中的所有基本类型数据设置成了默认值(对于数字来说就是0,对布尔型和字符型也相同),而引用则被设置成了null。

        5. 执行所有出现于域定义处的初始化动作。

        6. 执行构造器。

分享到:
评论

相关推荐

    Java基础教程.md.pdf

    - 用于初始化对象的某些部分。 ##### 8.12 Java单例模式 - 保证一个类只有一个实例,并提供一个全局访问点。 ##### 8.13 final修饰符 - 用于定义常量或不可变的对象。 ##### 8.14 Java抽象类 - 抽象类包含抽象...

    taobao-sdk-java-online_standard-.zip_taobao_taobao-sdk_taobao-sd

    开发者可以通过查阅这些源码来学习如何正确地初始化SDK、设置访问参数、调用接口以及处理返回的数据。 在使用淘宝SDK进行开发时,需要注意以下几个关键知识点: 1. **OAuth认证**:淘宝SDK通常采用OAuth 2.0协议...

    Java类的完整构造执行顺序

    2006年11月16日的更新提到了一种特殊情况,即在静态初始化块中直接或间接地创建了当前类的实例,这可能会导致初始化顺序的混乱。为了避免此类问题,应避免在静态初始化块中直接实例化当前类,而是将其延迟到类完全...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    面向对象编程的基础 要了解面向对象编程(OOP)的基本概念,需要理解 OOP 的三个主要概念,它们撑起 了整个 OOP 的框架。这三个概念是:封装、继承性和多态性。除此以外,还需了解对象、 类、消息、接口、及抽象等...

    【Java基础笔记】Java中的日期类.docx

    `getInstance()`方法返回一个`Calendar`实例,可以根据本地化设置初始化。 - `get()`方法用于获取指定字段(如年、月、日)的值,`set()`方法用于设置这些字段的值。 - `Calendar`类中定义了一系列静态常量,如`...

    2005年4月全国计算机等级考试二级JAVA笔试试题及答案.doc

    - **知识点**: Java 构造方法用于初始化对象的状态。 - **选项分析**: - A. 按照一般方法调用(错误): 构造方法不能像普通方法那样调用。 - B. 由用户直接调用(错误): 用户不能直接调用构造方法。 - C. 只能...

    新东方JAVA培训 月考题目(选择部分)

    新东方的Java培训月考题目涉及了Java编程的基础知识,包括命令行操作、代码结构、类与接口的定义、程序入口、注释、标识符、关键字、字符类型、数据类型范围以及字符串比较等方面。以下是对这些知识点的详细解释: ...

    Java判断文件的编码

    1. **初始化与异常处理**: - 创建一个`BufferedInputStream`对象,以提高读取效率。 - 使用`mark()`方法标记当前位置,以便之后可以使用`reset()`方法重置输入流的位置。 - 设置一个标志变量`checked`,用于记录...

    java日历核心代码

    1. **初始化变量**: - `year`:用于存储用户输入的年份。 - `month`:用于存储用户输入的月份。 - `day`:用于存储当前月份的天数。 - `sumday`:用于存储从1990年1月1日至指定日期的总天数。 - `yearday`:...

    java5月22号上级报告1

    【Java静态初始化与类加载顺序】\n\n在Java编程中,静态初始化是类加载过程中的一个重要环节。静态初始化块(static blocks)用于初始化类的静态成员变量,这些初始化操作只会在类被加载时执行一次。这个过程发生在...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    java逻辑50题

    - **变量初始化**:为了计算序列中的每一项,需要正确地初始化初始值。 - **示例代码片段**: ```java int a = 1, b = 1; for (int i = 3; i ; i++) { int c = a + b; a = b; b = c; } ``` #### 题目2:...

    java常用英语

    - **Initial**: 初始化,通常指类或对象的初始状态。 - **Paint**: 绘制,Java中的图形操作方法之一。 - **Draw**: 绘制,Java中用于绘制图形的方法。 - **Package**: 包,Java中组织类的方式之一。 - **Abstract**:...

    Java面试题大全

    - EJB生命周期包括创建、初始化、激活、钝化、去激活和销毁。 - 多线程涉及同步、并发和死锁问题。 - 文件加密技术如AES、RSA等用于数据安全。 这些面试题涉及到的Java知识广泛,不仅要求掌握基础语法,还需要...

    Java企业面试题整理及答案

    如果有初始化块,则按照它们出现的顺序执行。 **12. 内部类的实现方式** 内部类分为成员内部类、局部内部类、匿名内部类等。成员内部类是定义在类体内的类,它可以访问外部类的所有成员;局部内部类定义在方法内部...

    java综合面试题.pdf

    根据提供的文档内容,我们可以归纳总结出一系列重要的Java知识点,这些知识点不仅对于准备Java面试非常有用,也是Java开发者必备的基础知识。接下来,我们将按照文档中提到的主题进行详细解释。 ### Java面向对象 ...

    2014年Java最全面试题以及答案.

    final类中的方法默认是final的,而final类中的成员变量则必须在声明时或构造器中初始化。 10. 继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 在继承体系中,如果有一个方法在父类和子类中都有实现...

    04747 Java语言程序设计(一) 2013年1月

    ### 04747 Java语言程序设计(一) 2013年1月 #### 重要知识点解析 **1. Java数据类型中的整数类型** - **知识点概述**: - Java提供了多种基本数据类型来表示不同的数值。 - 整数类型包括:`byte`、`short`、`...

    java月考笔试考试.pdf

    10. 静态初始化块与代码执行:静态初始化块在类加载时执行一次,用于初始化静态成员。在给定的代码中,`x += 5;`在静态初始化块中,因此在`main`方法执行之前,x已经被修改为15。所以,打印结果是15。 以上是对Java...

    illy-Java.Threads.2nd.Edition

    《Java Threads 第二版》是一本关于Java线程编程的经典著作,由Scott Oaks与Henry Wong合著,出版于1999年1月。本书是针对Java 2平台进行修订和扩展的版本,全面覆盖了Java线程相关的各种概念和技术,旨在帮助读者...

Global site tag (gtag.js) - Google Analytics