`

JAVA对象的初始化过程

    博客分类:
  • java
阅读更多
http://blog.mcuol.com/User/mcuooo/Article/497_1.htm

public class Employee {
	public static String company = "A Company";
	private String name;
	private String phone = "0571-12345678";
	
	//静态代码块
	static {
		System.out.println("static code block!");
		System.out.println("Company Name :" + company +"\n");
	}
	
	//代码块
	{
		System.out.println("code block");
		System.out.println("company phone :" + phone+"\n");
	}
	
	//默认构造函数
	public Employee(){
		this("string");
		System.out.println("Employee()"+"\n");
	}
	
	//自定义构造函数
	public Employee(String name){
		System.out.println("Employee(String)"+"\n");
		this.name = name;
	}
	
	public static void main(String args[]){
		new Employee();
	}
}


输出:
static code block!
Company Name :A Company

code block
company phone :0571-12345678

Employee(String)

Employee()




public class Manager extends Employee{

	public static String department = "Technology";
	private int salary = 5000;
	
	//静态代码块
	static {
		System.out.println("sub static code block");
		System.out.println("Manager department :" + department + "\n");
	}
	
	//代码块
	{
		System.out.println("sub code block");
		System.out.println("Manager salary :" + salary + "\n");
	}
	
	//默认构造函数
	public Manager(){
		this("string");
		System.out.println("Manager()"+"\n");
	}
	
	//自定义构造函数
	public Manager(String name){
		System.out.println("Manager(String)"+"\n");
	}
	
	public static void main(String args[]){
		new Manager();
	}
}



输出:
static code block!
Company Name :A Company

sub static code block
Manager department :Technology

code block
company phone :0571-12345678

Employee(String)

Employee()

sub code block
Manager salary :5000

Manager(String)

Manager()



小结:
1:静态变量分配内存空间并初始化
2:对象分配内存空间,并做默认初始化。
3:显示初始化并执行非静态方法块和构造函数
(在变量声明是也会为类的静态变量分配内存空间并初始化,并执行静态代码)
分享到:
评论

相关推荐

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

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

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

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

    java程序初始化顺序

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

    03.Java对象初始化1

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

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

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

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

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

    java代码的初始化顺序demo

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

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

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

    Java对象初始化的多维度分析 (2).pdf

    Java 对象初始化的多维度分析 Java 对象初始化是一个基础概念,但是很多人不知道它的内涵,特别是在类继承时。下面,我们从三个维度来分析 Java 对象的初始化过程。 一、从程序运行维度分析 在 Java 中,对象初始...

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

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

    Java类继承初始化顺序

    当创建一个子类实例时,初始化过程遵循以下步骤: 1. **静态初始化**:首先,执行父类的静态初始化块,然后执行子类的静态初始化块。静态初始化块用于初始化类级别的静态变量,它们只在类加载时执行一次。 2. **...

    Java变量初始化

    Java 变量初始化的时机是指在 Java 语言中变量的初始化过程,包括变量的声明、初始化和赋值的步骤。 Java 变量声明 在 Java 语言中,每个变量必须先声明,然后才能使用。声明变量时必须指定该变量的数据类型。...

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

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

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

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

    图解Java对象初始化过程以及方法调用

    1:虚拟机加载OOPDemo类(省略详细加载过程(装载、链接、初始化)),提取类型信息(具体保存哪些类型信息查看博文:Java虚拟机体系结构),存储到方法区中,对应图中的绿色矩形区域。  2:通过保存在方法区的字节...

    java中类的初始化顺序

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

    java对象初始化代码详解

    一、Java 对象初始化过程 Java 对象初始化过程主要包括以下几个步骤: 1. 类加载:Java 解释器找到 Dog.class(在事先设定好的路径里面搜索),并创建一个 Class 对象。 2. 静态初始化:静态初始化模块都会运行,...

    Java初始化顺序1

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

    java类变量初始化顺序

    详细讲解java类中静态变量,普通标量,对象、基本类型的初始化顺序。

    深入介绍Java对象初始化

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

Global site tag (gtag.js) - Google Analytics