Java 中的静态块10 Sept 2024 | 4 分钟阅读 当一个代码块被“static”关键字修饰或与之关联时,它被称为静态代码块。静态代码块也称为静态子句。静态代码块可用于类的静态初始化。在类加载到内存时,静态代码块中的代码会执行一次。 调用静态代码块现在的问题是,如何调用静态代码块?调用静态代码块没有特定方法,因为每当类加载到内存时,静态代码块就会自动执行。请观察以下插图。 文件名: StaticBlock.java 输出 Inside the static block. Inside the constructor of the class. Inside the print method. Inside the constructor of the class. 解释:从输出可以看出,静态代码块的打印语句首先执行。然后,类的构造函数的打印语句执行,接着是 print() 方法的打印语句,然后再次是构造函数的打印语句。此外,请注意,在 main() 方法中,我们显式调用了类的构造函数和 print() 方法。然而,没有为调用静态代码块编写任何语句。这表明静态代码块是自动执行的,而且是在调用类的构造函数之前执行的。 示例 - 1让我们看一个例子来更好地理解静态代码块。 文件名: StaticBlock1.java 输出 Inside the static block. - 1 Inside the static block. - 2 Inside the static block. - 3 Inside the constructor of the class. Inside the method foo. Inside the constructor of the class. 解释:从输出可以看出,静态代码块首先执行,而且是按照代码中编写的静态代码块的顺序执行的。还可以看出,代码中可以存在多个静态代码块。 示例 - 2让我们看另一个静态代码块的例子。 文件名: StaticBlock2.java 输出 /StaticBlock2.java:21: error: non-static method foo() cannot be referenced from a static context foo(); ^ /StaticBlock2.java:22: error: non-static variable st cannot be referenced from a static context System.out.println(st); ^ 2 errors 解释:静态代码块只能访问静态变量或静态方法,如果尝试访问任何非静态变量/方法,则会报错。 为了使程序无错误地运行,请为变量 st 和方法 for 添加关键字 static,如下面的程序所示。 文件名: StaticBlock3.java 输出 Inside the method foo. 9 Inside the static block. - 1 Inside the constructor of the class. 静态代码块和 Main 方法我们知道,当类加载时,静态代码块会自动加载(请参阅上面的示例)。换句话说,不需要方法来调用静态代码块。那么问题来了,main() 方法有必要吗?答案取决于用户使用的 JDK 版本。 如果用户使用的是 JDK 1.06 或更早版本,静态代码块会在不提及 main() 方法的情况下执行。然而,如果用户使用的是高于 1.06 的 JDK 版本,程序会报错。 请观察以下两个程序。 文件名: StaticBlock4.java 输出 The print statement gets executed without main method. 文件名: StaticBlock5.java 输出 Error: Main method not found in class StaticBlock5, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application 下一主题Java 中的访问器和变异器 |
稀疏向量构成许多应用(如科学计算、机器学习和信息检索)中的基本数据结构。当处理高维数据,其中大部分元素为零时,它们特别有用。本文提供了关于创建...
5 分钟阅读
Java 是一种流行的编程语言,被世界各地的开发人员用于构建各种应用程序。尽管 Java 流行且可靠,但 Java 程序容易出错和出现异常。Java 中最常见的异常之一是 ClassNotFoundException。在本文中,...
阅读 4 分钟
如果一个数字 num 加上数字 num + 1 然后拼接起来是一个完全平方数,那么这个数字 num 就被称为 Sastry Number。例如 1:输入 int num = 183 输出 183 是一个 Sastry Number。解释:如果我们把数字 183 和数字 184 (183 + 1) 拼接起来...
阅读 4 分钟
Java 8 的 lambda 表达式功能使得编写更短、更具表达力的代码成为可能。您可以使用 lambda 表达式有效地将代码作为数据传输,或将功能视为方法参数。它们经常用于函数式编程,从而催生了...
阅读 4 分钟
在本节中,我们将学习什么是不可达数,并创建 Java 程序来检查给定数字是否是不可达数。不可达数程序经常在 Java 编码面试和学术界中出现。不可达数 一个数 N 被称为...
阅读 3 分钟
在 Java 中,正则表达式经常用于使用字符序列定义搜索模式。量词,它决定了字符或字符组的出现次数,是指定搜索范围不可或缺的一部分。这些表达式有助于定义模式规则...
5 分钟阅读
反序列化,通常称为解组,将序列化数据恢复为其原始形式,以便应用程序可以使用它。通过 Serializable 和 Externalizable 接口,用于将对象转换为字节流然后返回,Java 支持序列化和反序列化。自定义序列化通过实现 Serializable...
阅读 4 分钟
泛化和特化是面向对象编程(OOP)中的两个重要概念。泛化是从具体概念到更一般概念的过程。特化是从一般概念到更具体概念的过程。在 Java 中,泛化和特化是通过...实现的。
阅读 4 分钟
Java 中 Set 和 Map 的区别 在 Java 中,Set 和 Map 是集合框架中提供的两个重要接口。Set 和 Map 接口都用于将对象集合存储为一个单元。Set 和 Map 之间的主要区别在于...
7 分钟阅读
Java 编程是最常用的编程语言之一。在 IT 行业,有超过 800 万 Java 开发人员。Java 开发人员的数量正在迅速增长。学习 Java 并非一蹴而就,需要时间和实践。它...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India