`
guizuhong2005
  • 浏览: 22165 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java编程 之 初始化

阅读更多
    Java进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。
    程序在定义一个类的对象之前要先将该类的class文件转载进内存,而class文件是编译后生成的,其中包括了类的初始化过程的定义,即Java 编译器把所有的类变量(静态变量)初始化语句和类型的静态初始化器通通收集到 <clinit> 方法内,该方法只能被 Jvm 调用,专门承担初始化工作。而class文件与类中的成员变量对应的是 "<init>()" 方法。编译器会为每一个构造函数生成一个 "<init>()" 方法。

初始化的时机-------在首次主动使用前初始化
1.创建类的实例
2.访问类或接口的静态变量(static final常量除外,static final变量可以)(此时只会初始化静态变量和静态块,其他在创建该类时初始化)
3.调用类的静态方法
4.反射(Class.forName(packageName.className))
5.初始化类的子类(子类初始化问题:满足主动调用,即访问子类中的静态变量、方法,否则仅父类初始化)
6.java虚拟机启动时被标明为启动类的类
    注:加载顺序:启动类的static block最先加载(父类静态成员、静态代码块—>子类静态成员、静态代码块—>父类实例成员、代码块——>父类构造函数—>子类实例成员、代码块—>子类构造函数)

    类的静态变量即类变量是在首次装载后完成初始化的,而且此过程只进行一次。而类的成员变量的初始化是在装载完成后创建该类的对象时进行的。由此可知,类的初始化顺序是先静态成员,而后是非静态成员。需要指出的是,不管是静态成员还是非静态成员的初始化,如果存在父类则要先进行父类的初始化,然后才是子类的初始化。初始化块跟定义时初始化是同等的关系,两者的先后顺序与在类中出现的先后有关。当初始化块跟定义时初始化都进行完后则进入构造函数。

静态final变量在编译时不定的情况下。如果客户程序这个时候访问了该类的静态变量,那就会对类进行初始

jvm初始化类时,要求其父类都已经被初始化,但此规则不适用于接口
1.在初始化一个类时,并不会先初始化它所实现的接口
2.在初始化一个接口时,并不会先初始化它的父类接口



分享到:
评论

相关推荐

    java数组初始化详解

    Java 数组初始化是 Java 编程语言中的一种基本概念,它允许开发者创建和初始化数组,以便于存储和操作数据。在本文中,我们将对 Java 数组初始化进行详细的介绍,包括一维数组和二维数组的声明、初始化和使用。 一...

    java程序初始化顺序

    在Java编程语言中,程序初始化的顺序是一个关键概念,它涉及到类加载、对象创建以及执行流程的安排。了解这些顺序对于编写高效、无错误的代码至关重要。以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**...

    java代码的初始化顺序demo

    在Java编程语言中,类和对象的初始化是一个关键的概念,对于理解和编写健壮的程序至关重要。这个"java代码的初始化顺序demo"显然旨在演示这一过程。让我们深入探讨Java中的初始化顺序及其背后的机制。 1. **类加载...

    java编程思想-初始化与清理

    java编程思想-初始化与清理了解this之后,你就能更全面地理解“静态(static)方法”的含义。静态方法就是没有this的方法。在“静态方法”的内部不能调用“非静态方法”,反过来倒是可以的。而且你可以在没有创建...

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

    在Java编程语言中,初始化块是程序执行时用于初始化对象或类的重要机制。这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种...

    Java类继承初始化顺序

    在Java编程语言中,类继承是面向对象设计的一个核心特性,它允许我们创建一个新类(子类)作为现有类(父类)的扩展。当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、...

    java 初始化与方法

    Java初始化与方法是Java编程语言中的核心概念,它们在程序执行过程中起着至关重要的作用。本文将深入探讨Java中的初始化过程、方法的定义与调用,以及与之相关的源码和工具应用。 首先,让我们从类的初始化开始。在...

    java中类的初始化顺序

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

    java语法\Java数组声明、创建、初始化

    Java数组的声明、创建和初始化是Java编程中非常重要的概念。 数组声明 在Java中,数组可以使用两种方式声明:一种是将数组名和类型分开写,例如`int var[];`,另一种是将数组名和类型写在一起,例如`int[] var;`。...

    Java变量初始化

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

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

    在面试中,面试官可能会通过这种类型的题目来评估应聘者对Java内存模型的理解,以及他们在编写代码时是否能考虑到这些初始化规则,从而避免潜在的陷阱。因此,掌握类的初始化顺序是每个Java开发者必备的知识点。

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

    ### Java中对象创建、初始化与引用详解 #### 一、Java对象、引用及创建...理解和掌握这些基本概念对于深入学习Java编程至关重要。此外,了解Java中的栈与堆以及句柄的概念也有助于更好地理解和管理程序中的内存资源。

    6种方法初始化JAVA中的list集合

    在Java编程中,List集合是开发人员经常使用的一种数据结构,用于存储有序的元素列表。本文将详细介绍6种初始化Java List集合的方法,并通过代码示例帮助理解每种方法的使用和特点。 1. 常规方式 这是最常见的初始化...

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

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

    学习java静态数据初始化.doc

    Java 静态数据初始化详解 在 Java 中,静态数据初始化是指在类加载过程中对静态变量的初始化。静态变量是在类加载时被初始化的,而不是在实例创建时。静态变量的初始化顺序是按照它们在类中的定义顺序进行的。 在 ...

    java学习之神奇初始化

    在Java编程语言中,类的初始化顺序是一个非常重要的概念。特别是当涉及到静态成员(`static`)的初始化时,这一顺序对于理解程序的行为至关重要。根据提供的文件信息,我们将深入探讨以下几个核心知识点: 1. **...

    java初级视频教程系列之-java初始化

    "Java初级视频教程系列之-java初始化"是一套专为初学者设计的教育内容,由经验丰富的IT专家精心录制,旨在帮助学习者掌握Java编程的基础,特别是关于对象初始化的重要概念。 在Java中,初始化是一个关键的步骤,它...

    详解Java的初始化与清理

    Java的初始化与清理是编程过程中至关重要的环节,它关乎到程序的正确运行和资源的有效管理。本文将深入探讨Java中的初始化过程,包括对象的构造器初始化以及类成员的初始化顺序,同时也会涉及Java的垃圾回收机制,即...

Global site tag (gtag.js) - Google Analytics