为什么在类中使用ArrayList方法需要主方法?

3

我能做到这个:

import java.util.ArrayList;

public class Array {

    public static void main(String args[]){

    ArrayList<String> myList = new ArrayList<String>();

    myList.add("S");

    }
}

但是我无法做到这一点:


import java.util.ArrayList;

public class Array {

    ArrayList<String> myList = new ArrayList<String>();

    myList.add("S");


}

Why I have to include the main method?


2
你必须始终将它们设置在一个方法中。 - AngularLover
5
你不需要一个主方法,你需要一个方法。主方法是程序运行所必需的(自Java 7以来,也需要编译)。 - BackSlash
1
感谢您的解释。 - OPK
2个回答

13

由于Java类由方法和块组成。您不能有一个原始语句,如

myList.add("S");

最后,你的应用程序需要一个入口点,而Java虚拟机会通过调用JLS-12.1.4. Invoke Test.main中所述的main()来启动。

最后,在完成Test类的初始化(在此期间可能已发生其他相关的加载、链接和初始化)之后,将调用Testmain方法。

main方法必须声明为publicstaticvoid。它必须指定一个形式参数(§8.4.1),其声明类型为String数组。


1
但是你可以在成员声明中使用ArrayList<String> myList = new ArrayList<String>();,而不是在方法中。 - ChiefTwoPencils
@ChiefTwoPencils 这将创建一个字段。您可以使用初始化块 {myList.add("S");}(但这将复制到每个构造函数中)。 - Elliott Frisch
@ElliottFrisch 我可以创建一个可以容纳不同类型值的ArrayList吗?比如一个既可以容纳整数又可以容纳字符串的ArrayList? - OPK
1
@taimeili123 这不是一个好主意,除了 Object 以外它们没有共同的祖先(所以必须是 List<Object>,这样不太类型安全)。然后你就需要检查特定的 Object 是一个 Integer 或者一个 String - Elliott Frisch

4

你需要使用 main 函数作为程序的启动点。程序无法知道类的作用和原因,因此只有在 main 内部使用它时才能正常工作。按照惯例,main 函数是程序的起始点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接