更新时间:2022-04-24 10:33:00 来源:极悦 浏览980次
在本教程中,极悦小编将告诉大家 Java 中各种初始化块(如静态块、初始化块和构造函数)的执行顺序是什么。
大多数时候,在面试中会问这样一个问题,以测试候选人对 Java 基础的基本知识。
让我们开始教程。
在 Java 中,我们有各种类型的初始化块,它们是静态块、初始化块和实例初始化块。然后有一个构造函数。
让我们对每种类型的块做一个简单的介绍。
每当类第一次在 JVM 中加载时,静态初始化块就会运行。
初始化块
初始化块类似于静态初始化块,但其中没有使用静态关键字。它只是 { start 和 end } 大括号内的一个块。初始化块将按照它们在程序中出现的顺序运行。
简单地说,它包含在创建实例时始终执行的代码。初始化块的主要目的是声明或初始化类中存在的各种构造函数的公共部分。
实例初始化块
实例初始化块是在初始化类时和调用构造函数之前执行的块。主要用于初始化实例变量。这种类型的块在构造函数之前执行,并且在每次创建类的对象时运行。
这些是Java中的各种初始化块,现在我们将讨论这些块在Java程序中的执行顺序是什么。
但是这里要注意的重要一点是,如果这些是两个或多个静态/初始化程序块,那么它们将按照它们在源代码中出现的顺序执行。
让我们通过一个例子来理解所有这些概念。
package com.initializationializationblocks;
public class InitializationOrderExample {
InitializationOrderExample(int x) {
System.out.println("ONE argument constructor");
}
InitializationOrderExample() {
System.out.println("No argument constructor");
}
static {
System.out.println("1st static initialization");
}
{
System.out.println("1st instance initialization");
}
{
System.out.println("2nd instance initialization");
}
static {
System.out.println("2nd static initialization");
}
public static void main(String[] args) {
new InitializationOrderExample();
new InitializationOrderExample(800);
}
}
输出
1st static initialization
2nd static initialization
1st instance initialization
2nd instance initialization
No argument constructor
1st instance initialization
2nd instance initialization
ONE argument constructor
这就是本教程的全部内容。希望您喜欢本教程并能够理解 Java 中的各种初始化块及其执行顺序。如果大家想了解更相关知识,不妨来关注一下极悦的Java教程,里面的课程内容细致全面,通俗易懂,适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习