java - 为什么 public static void main 方法不会在实例化的类中自动运行?
问题描述
我理解public static void main
在我的入门课程中的意义——在程序运行时执行代码。
我在网上阅读的一些文章指出,任何类都可以有一个主类。我创建了从第一个类调用的第二个类并创建了它的一个实例,但是第二个类主方法中的代码没有运行。我是否误解了这种方法在主类以外的类中是如何工作的?
public class Main {
public static void main(String[] args) {
aClass newClass = new aClass();
}
}
public class aClass{
public static void main(String[] args) {
System.out.println("hello");
}
}
解决方案
确实“任何类都可以有一个主类”。但是只运行一种 main
方法,不管有多少类有一个。
运行哪种main
方法取决于应用程序的指定入口点,即在运行代码时明确指示的入口点java name.of.class
,或者 JAR 清单指示的入口点。
相反,您可以为类提供静态初始化块。该块将在第一次加载类时运行一次:
public class Main {
public static void main(String[] args) {
new aClass();
new aClass();
}
}
public class aClass{
static {
// Run only once!
System.out.println("hello");
}
}
即使您没有实例化您的类,而是调用它的静态方法,这段代码也会运行。但是,如果您的代码中根本没有引用任何内容aClass
,那么它的静态初始化程序将不会运行。
推荐阅读
- javascript - Node中函数之间的数据接口
- awk - 在 awk 中比较当前行和下一行
- r - 如何将一些样本名称更改为R中PCA中的点或星号等符号?
- ios - 如何在 Swift 5 中检查字符串是否以字母开头?
- firebird - 如何解决 PSQL 函数中的 Firebird 搜索案例错误
- php - 在使用 Laravel 期间执行迁移时有什么方法可以避免错误?
- swift - Swift,与 containerView 相关的新手问题。如何使孩子的故事板视图控制器与容器视图的大小相同
- python - 如何使用openpyxl将qtablewidget数据保存到excel文件中
- css - vue类绑定对象的变量
- python - 文本分析预测后如何结合 X_test、y 测试和 y 预测?