`
zhiziwei
  • 浏览: 3595 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

代码说事 之 创建java对象的初始化顺序

阅读更多
package util;
/**
 * 类初始化顺序:
 *父类静态代码块--->子类静态代码块--->父类代码块--->父类构造方法--->子类
 *代码块--->子类构造方法
 *1.  父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行 
 *2.  子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行 
 *2.  父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行 
 *4.  父类构造方法
 *5.  子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行 
 *6.  子类构造方法
 * @author zhiziwei
 * 
 */
public class ObjectInit {
	public ObjectInit(){
		System.out.println("ObjectInit构造方法");
	}
	public static void main(String[] arg0){
		new B();
		System.out.println("----------------------------");
		new B();
	}
}
class A{
	//static ObjectInit oi = new ObjectInit();//此时,“ObjectInit
               //构造方法”输出在"A static 代码块"上边
	static{
		System.out.println("A static 代码块");
	}//只执行一次
	static ObjectInit oi = new ObjectInit();//此时,“ObjectInit构
           //造方法”输出在"A static 代码块"下边
	protected String s = "先于父类代码块声明并初始化";
	{
		System.out.println("A 代码块");
		System.out.println("A 实例变量s输出:"+s);
	}//对象被创建几次,执行几次
	public A(){
		System.out.println("A 构造方法");
	}
}
class B extends A{
	static {
		System.out.println("B static 代码块");
	}
	{
		System.out.println("B 代码块");
	}
	public B(){
		System.out.println("B 构造方法");
	}
}
输出结果:
A static 代码块
ObjectInit构造方法
B static 代码块
A 代码块
A 实例变量s输出:先于父类代码块声明并初始化
A 构造方法
B 代码块
B 构造方法
----------------------------
A 代码块
A 实例变量s输出:先于父类代码块声明并初始化
A 构造方法
B 代码块
B 构造方法

 

分享到:
评论

相关推荐

    Java静态初始化块和对象初始化块

    总之,理解并有效地使用静态和对象初始化块是Java开发中的关键技能,它们可以帮助我们更好地控制类和对象的初始化过程,确保代码的高效性和正确性。在实际编程中,我们应该根据需求谨慎选择合适的初始化策略,以优化...

    java代码的初始化顺序demo

    这个"java代码的初始化顺序demo"显然旨在演示这一过程。让我们深入探讨Java中的初始化顺序及其背后的机制。 1. **类加载阶段**: 在Java程序运行时,JVM会先加载类的字节码文件(.class文件)。这个过程包括加载、...

    java程序初始化顺序

    以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**: - **加载**:当Java虚拟机(JVM)首次遇到一个类的引用时,会通过类加载器进行加载。加载过程包括找到类的.class文件,读取其字节码,并转化为内存中...

    java面试题-类的初始化顺序.doc

    类--初始化块"); 39. } 40. // 构造器 41. public SubClass() { 42. System.out.println("子类--构造器"); 43. } 44. 45. public static void main(String[]...因此,掌握类的初始化顺序是每个Java开发者必备的知识点。

    Java类继承初始化顺序

    当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、super关键字以及方法的覆盖。 首先,了解类初始化的顺序至关重要。当创建一个子类实例时,初始化过程遵循以下步骤: 1. ...

    对象初始化流程梳理对象初始化流程梳理

    Java中的对象初始化流程是编程实践中一个非常重要的概念,它涉及到类加载、静态初始化块、实例初始化块、构造器等多个方面。下面将详细解释这个过程。 首先,对象初始化流程的起点是程序的入口点,即`main`方法。当...

    java中类的初始化顺序

    ### Java中类的初始化顺序详解 #### 一、概述 在Java编程语言中,类的初始化是一个非常重要的概念。类的初始化涉及到多个方面,包括静态成员变量、实例成员变量、静态初始化块、实例初始化块以及构造函数等。本文...

    Java变量初始化

    Java 变量初始化是 Java 语言的基础知识点之一,但也往往被学习者所忽略。 Java 变量初始化的时机是指在 Java 语言中变量的初始化过程,包括变量的声明、初始化和赋值的步骤。 Java 变量声明 在 Java 语言中,每个...

    Java初始化顺序1

    Java 初始化顺序详解 在 Java 中,变量可以分为两类:类变量(静态变量)和实例变量(对象变量)。类变量是使用 static 关键字修饰的变量,它们属于类,而不是对象。实例变量则是没有使用 static 关键字修饰的变量...

    java对象的初始化顺序[参考].pdf

    Java对象的初始化顺序是一个关键的编程概念,它涉及到类加载、静态初始化、实例初始化等多个步骤。下面我们将详细探讨这些步骤。 首先,当程序运行并创建一个新的对象时,JVM(Java虚拟机)会按照特定的顺序来初始...

    Java中对象初始化顺序的详细介绍

    在Java编程语言中,对象初始化是一个关键的概念,它涉及到类加载、对象实例化以及成员变量的赋值。本文将深入探讨Java中对象初始化的顺序,帮助开发者理解这一过程的细节。 首先,Java类的加载过程分为三个阶段:...

    java代码初始化流程研究

    静态变量的初始化顺序按照它们在源代码中的出现顺序进行,而静态块则是在类加载时按顺序执行的。例如,在`JvmTest.java`和`JvmTest1.java`中,如果有静态变量和静态初始化块,它们的执行顺序将体现在`<clinit>`方法...

    Java初始化块Java初始化块.doc

    Java 初始化块,也称为构造代码块,是Java编程语言中的一种特性,用于在对象创建时执行特定的初始化操作。初始化块在类的定义中以 `{}` 包裹的一段代码,没有返回值,也不需要任何参数。根据是否带有 `static` ...

    类继承的初始化顺序类,继承的初始化顺序

    本文详细介绍了类继承中的初始化顺序问题,包括初始化的基本概念、初始化过程中的关键步骤以及如何正确处理基类和子类之间的构造函数调用。理解这些概念对于编写高效、可维护的面向对象程序至关重要。希望通过对这些...

    java对象初始化代码详解

    Java 对象初始化代码详解主要介绍了 Java 对象初始化代码详解,涉及实例变量的初始化,类变量的初始化等相关介绍几代码示例,具有一定参考价值,需要的朋友可以了解下。 一、Java 对象初始化过程 Java 对象初始化...

    java类中静态域、块,非静态域、块,构造函数的初始化顺序

    ### Java 类中静态域、块,非静态域、块,构造函数的初始化顺序 #### 一、概述 在 Java 编程语言中,类的初始化顺序对于理解程序的行为至关重要。特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块...

    java对象初始化顺序验证示例

    Java对象初始化顺序是一个重要的编程概念,它涉及到类的继承、构造函数、成员变量初始化和非静态初始化块。在这个示例中,我们通过一个简单的代码片段来验证这些规则。首先,让我们详细解析一下给出的代码: ```...

    详解Java的初始化与清理

    接下来,我们讨论Java对象的初始化顺序。在继承体系中,初始化顺序遵循以下规则: 1. 首先,执行静态初始化块(如果存在)。静态初始化块在类加载时执行一次,按它们在代码中的顺序进行。 2. 然后,执行父类的非...

    深入介绍Java对象初始化

    总的来说,Java对象初始化是一个多步骤的过程,涉及默认值、显式赋值、构造器、初始化块以及继承关系下的初始化顺序。理解这些概念对于编写健壮的Java代码至关重要,能够帮助避免因不当初始化导致的错误。

    探究java的ClassLoader及类变量初始化顺序

    总之,深入理解Java的ClassLoader机制和类变量初始化顺序是提升Java编程技能的重要步骤。通过学习这些知识点,开发者可以更好地优化代码、设计更健壮的系统,并解决与类加载和初始化相关的复杂问题。

Global site tag (gtag.js) - Google Analytics