`

对象初始化过程

 
阅读更多


1、在栈中开辟一个空间p。
2、通过类加载器装载classs文件。
3、执行类中的静态代码块。
4、在堆内存中开辟空间,分配内存地址。
5、执行成员默认初始化。
6、执行构造代码块。
7、执行构造函数初始化、
8、把堆内存中的地址赋给应用变量。

我们可以测试看看结果

 
public class User implements Serializable {

	private static final long serialVersionUID = 1L;
	private String id;
	private String name;
	private int age;
	{
		System.out.println("代码块");
	}

	static {
		System.out.println("静态代码块");
	}

	public User() {
		super();
		System.out.println("默认构造函数");
	}

	public User(String id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}

	public static void main(String[] args) {
		User u = new User();
		User u1 = new User();
		
	}
}

 

 

结果:

静态代码块
代码块
默认构造函数
代码块
默认构造函数

 

 

 

 

 

 

分享到:
评论

相关推荐

    “礼让”原则学习Java对象初始化顺序.pdf

    Java 对象初始化顺序是指在 Java 程序中,对象的初始化过程中发生的顺序问题。这是 Java 编程语言的基础知识点之一,但是许多学生在学习和使用时总是感到困惑和困难。 二、JVM 执行过程中的“礼让”原则 JVM 在...

    WPF 对象初始化器_1 对象初始化器_1

    对象初始化器是C# 3.0引入的一项新特性,它简化了对象创建的过程。在传统的面向对象编程中,创建对象后通常需要手动设置各个属性。这种方式不仅繁琐,而且容易出错。对象初始化器则提供了一种更简洁、更易读的方式来...

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

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

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

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

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

    本文将深入探讨Java中对象初始化的顺序,帮助开发者理解这一过程的细节。 首先,Java类的加载过程分为三个阶段:装载、链接和初始化。装载是将类的.class文件读入内存,并为之创建一个Class对象。链接则是将类的二...

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

    本篇文章将围绕“类继承的初始化顺序”这一主题展开,详细解析初始化过程中涉及的关键概念和技术细节。 ### 类继承的初始化顺序概述 在面向对象语言中(如Java、C#等),当创建一个继承自某个基类的子类对象时,会...

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

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

    java程序初始化顺序

    - 当多个线程同时尝试初始化同一个类时,Java保证只会执行一次类的初始化过程。这是由JVM的同步机制保证的,避免了数据竞争的问题。 5. **接口初始化**: - 接口没有实例变量,所以不存在实例初始化阶段。接口的...

    03.Java对象初始化1

    Java 对象初始化过程详解 Java 对象的初始化过程是通过 new 指令开始的,首先会根据指令参数在常量池中定位到一个类的符号引用。如果没有定位到这个符号引用,那么这个类就没有被加载,就需要 JVM 进行类的加载。...

    Java——对象初始化顺序使用详解

    tr); fatherStr = "fatherStr...总之,Java对象初始化顺序是编程过程中必须掌握的基础知识,它涉及到类的加载、实例化过程以及字段和方法的调用顺序。正确理解和运用这些知识,能够使我们写出更加健壮、高效的代码。

    通过java字节码分析学习对象初始化顺序

    在Java编程语言中,对象初始化顺序是一个重要的概念,它涉及到类和对象的生命周期。通过字节码分析,我们可以深入理解这个过程。字节码是Java虚拟机(JVM)理解和执行的二进制代码,它是Java源代码经过编译后的产物...

    Java对象初始化顺序的使用

    在Java编程语言中,对象初始化顺序是一个非常关键的概念,它涉及到类和对象的生命周期以及成员变量、静态成员变量、初始化块和构造函数的执行次序。理解这些规则对于编写健壮且可预测的代码至关重要。 首先,我们来...

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

    这个顺序表明,无论类之间的继承关系如何,初始化顺序始终是:静态变量和静态初始化块先于非静态成员。在创建对象时,父类的初始化先于子类。这是Java语言规范所规定的,确保在子类访问父类的静态或非静态成员时,...

    java代码的初始化顺序demo

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

    C++全局变量初始化的一点总结

    总之,C++全局变量的初始化是一个涉及编译时和运行时行为的复杂过程。理解和遵循正确的初始化规则,避免全局变量间的相互依赖,以及使用恰当的技巧来管理这些变量,对于编写可靠且可维护的C++代码至关重要。程序员...

    类和对象的初始化过程.zip

    总结,这个压缩包文件提供了关于Java中类和对象初始化的实例,包括静态和非静态成员的处理、继承、构造函数的调用顺序等。通过分析并运行这些代码,开发者可以更深入地理解Java的初始化机制。对于初学者来说,这是一...

    c#对象初始化顺序实例分析

    在C#编程语言中,对象初始化是一个至关重要的过程,它涉及到类的构造函数以及成员变量的设置。本文通过实例分析了C#中的对象初始化顺序,这对于理解和编写安全、高效的代码至关重要。 首先,让我们来理解C#对象初始...

    java中类的初始化顺序

    本文将详细探讨Java中类的初始化过程及其顺序,并通过具体的代码示例来帮助理解这一过程。 #### 二、基础知识 1. **静态成员变量(Static Fields)**:在类加载时初始化。 2. **实例成员变量(Instance Fields)**...

    java中对象创建、初始化、引用

    #### 二、Java中对象创建和初始化过程中涉及的相关概念 ##### 1. Java中的栈与堆 - **栈**:用于存储基本数据类型的变量和对象的引用。 - **堆**:用于存储由`new`操作符创建的对象实体。 ##### 2. 句柄的概念 ...

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

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

Global site tag (gtag.js) - Google Analytics