`
javatoyou
  • 浏览: 1068819 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

初学Java,初始化块(十三)

 
阅读更多

初始化块是什么?在Java中就是在构造器之前执行的一段代码,它的用处是,如果一段初始化处理代码对所有对象完全相同,且无须接受任何参数,就可以把这段提取到初始化块中.在C#中,没有初始化块


输出

Person 初始化块:局部变量a的值大于4

Person的第二个初始化块

Person的无参数构造器


初始化块的执行顺序是按定义的顺序执行,最后才轮到构造器

初始化块又分为非静态初使化块和静态初始化块,静态初始化块必须要用static进行修饰,静态初始化块是对类而言,非静态初始化块是对对象而言,但静态初始化块的执行顺序在前,非静态在后.


从上面的执行结果可以看出,类初始化阶段,先执行最顶层父类的静态初始化块,依次向下,最后执行当前类静态初始化块,对象初始化阶段,先执行最顶层父类的初始化块,构造器,依次向下,最后执行当前类初始化块,构造器

分析上面的例子,主程序两次执行new Leaf(); ,创建2个Leaf对象,第一次创建Leaf对象时,系统中还不存在Leaf类,因此需要先加载并初始化Leaf类,初始化Leaf类时会先执行其顶层父类的静态初始化块,最后才执行Leaf本身的静态初始化块.

一旦Leaf类初始化成功后,Leaf类在该虚拟机里将一直存在,因此当第二次创建Leaf实例时无须再次对Leaf类进行初始化.

所以这个执行的优先级为 : 所有类的静态初始化块(从父类自顶向下) -> 所有类的普通初始化块然后接着类的构选器(从父类自顶向下)

如果再实例化一个对象,那么就没有类初始化这个步骤了,因为已经发生在第一次实例化了,类初始化只会发生一次!且在该类的所有对象实例化之前

分享到:
评论

相关推荐

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

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

    Java static静态初始快

    在提供的文件"9.static静态初始化快"中,可能包含了关于如何定义和使用静态初始化块的示例代码,这将帮助初学者更好地理解这个概念。通过查看和分析这些代码,你可以进一步了解静态初始化块的实际应用和效果。学习这...

    非常好的java笔记适合初学者

    初学者会学习如何声明和初始化变量,理解不同类型的数据(如整型、浮点型、字符型和布尔型)以及它们在内存中的表示。此外,运算符的使用和流程控制结构的掌握将帮助编写出逻辑清晰的代码。 其次,笔记中应该会深入...

    java初学者代码

    学习如何声明、初始化和遍历数组是初学者的重要任务。 4. **函数和方法**:Java中的函数是可重用的代码块,可以接收参数并返回值。学习如何定义、调用和传递参数给方法是理解面向对象编程的基础。 5. **类与对象**...

    初学Java傻瓜版-第2版

    5. **数组**:理解数组的概念,如何声明、初始化和操作数组,以及一维和多维数组的区别。 6. **函数**:学习函数的定义、参数传递和返回值,以及如何使用内置函数和自定义函数。 7. **面向对象编程**:深入理解类...

    java初学的一些小例子

    初学者需要理解如何声明、初始化和操作数组。 10. **字符串处理**:String类是Java中常用的类,用于处理文本。了解字符串的基本操作,如拼接、截取、查找和替换等,是必备技能。 在"Java初级案例源码"中,这些概念...

    JAVA初学者入门必备的知识

    - 静态对象的初始化发生在main方法执行之前,首次创建对象或访问静态成员时,会按照在类中的顺序初始化静态变量。 2. **继承时的对象初始化**: - 按照从超类到子类的顺序初始化静态成员,然后调用默认构造方法,...

    java初学者适用——java实例大全

    实例中,你可以看到如何在Java中声明并初始化变量,如何进行基本的算术和逻辑操作,以及如何通过控制流程来决定程序的执行路径。 接下来,面向对象编程(OOP)是Java的核心特性。这包括类的定义、对象的创建、封装...

    Java初学者实例源码

    实例源码将展示如何声明、初始化和操作数组。 4. **字符串处理**:Java中的`String`类提供了丰富的字符串操作方法,如拼接、查找、替换等。初学者可以通过相关源码学习如何有效管理字符串。 5. **异常处理**:Java...

    初学者java作业题目

    3. **数组**:了解一维和多维数组的创建、初始化、遍历以及对数组元素的操作,比如排序、查找等。 4. **字符串操作**:Java中的String类提供了丰富的字符串处理功能,如字符串的连接、截取、查找、替换等。理解和...

    一些意外的JAVA错题——送给初学java的朋友

    错误7:final 实例变量的初始化 在 Java 中,`final` 实例变量必须在构造器结束之前被赋予一个明确的值。因此,以下代码是错误的: ```java class Something { final int i; public void doSomething() { System....

    java初学者必看

    尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,不妨过来讨论一下哦! 第1章 Java概述 1.1 Java的发展史 1.1.1 Java起源 1.1.2 Java发展 1.2 Java是什么 1.2.1 Java语言 1.2.2 Java平台 1.2.3 ...

    java初学好文档

    `,初始化数组如`numbers[0] = 1; numbers[1] = 2;`。 5. **方法** 方法是完成特定任务的代码块,可以通过函数调用来重复使用。例如,`public static void printHello() { System.out.println("Hello"); }`定义了...

    java初始程序

    Java初始程序是一个面向初学者的教程,旨在帮助学习者理解并掌握Java编程语言的基础知识,包括如何搭建项目架构以及如何简单地使用各种API。在这个过程中,我们将深入探讨以下几个关键知识点: 1. **Java环境配置**...

    全新java初学者实践教程

    学习如何编写类,使用构造函数初始化对象,以及使用访问修饰符控制成员的访问权限。 4. **数组**:了解一维和多维数组的声明、初始化和操作,以及遍历数组的方法。 5. **字符串处理**:Java中的String类是不可变的...

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

    这个压缩包文件包含三个源代码文件:StaticTest.java、Test.java和Father.java,它们可能用于演示类和对象初始化的不同方面。让我们逐一探讨这些概念。 1. **类的初始化** 类的初始化通常在以下几种情况下发生: ...

    初学者JAVA代码题

    基本语法是`for (初始化; 条件; 更新) { 代码块 }`。 - **if-else语句**:这是最基本的条件判断,用于根据不同的条件执行不同的代码块。语法为`if (条件) { 代码块 } else { 代码块 }`,可以嵌套使用以实现更复杂的...

    java初学者学习源代码

    学习如何声明、初始化和使用这些数据类型是Java编程的基础。 2. **变量与常量**:变量用于存储数据,常量则在程序执行过程中不能改变。了解它们的定义、作用域以及如何声明是初学者必须掌握的知识点。 3. **运算符...

    初学Java实验小代码

    【标题】"初学Java实验小代码"指出的是一个针对初学者设计的Java编程实践项目。这个项目可能包含了多个简单的代码示例,旨在帮助新手理解Java语言的基础概念和语法。 【描述】提到“这个事接原来那个java代码的”,...

Global site tag (gtag.js) - Google Analytics