public static void main()
& public void main()
这两者之间有什么区别?
答案 0 :(得分:8)
前者(可能)是一个入口点方法(如果它有一个String[]
参数)。后者不是。
规则是入口点方法必须具有签名:
public static void main(String[])
如果我们忽略“入口点”的问题,那么“静态”方法和普通方法之间的区别如下:
普通方法只能在目标对象上调用,但它可以通过显式或隐式使用this
来访问目标对象的实例变量。
不会在目标对象上调用静态方法,也无法通过this
访问实例变量。
答案 1 :(得分:3)
静态函数属于类(也就是说,它们不使用实例变量(对象变量))。
答案 2 :(得分:1)
public static void main(String[] args)
因为它使用特殊的'main'名称,并且对于字符串参数也是静态的,所以它是程序的入口点。它可以像这样调用
YourClass.main(new String[] {"hello"})
但是,当您将程序编译为可运行的.jar文件时,java将自动知道运行此方法。这是你的计划的起点。
在终端中,您将像这样运行
java -jar YourClass.jar你好
其他方法也可以是静态的
public static void myOtherFunction()
这里的区别在于myOtherFunction()不是应用程序的起点,但可以在您主要需要的应用程序的任何地方使用,您也不需要类的实例来使用它。
public void main()
是类的常规方法它需要一个实例才能使用它。
YouClass me = new YouClass();
me.main();
如果没有签名
,请不要调用任何方法main()public static void main(String[] args)
即。申请的入口点。对于阅读代码的人来说,这可能会让人感到困惑。
答案 3 :(得分:0)
静态意味着该函数不需要类实例才能被调用。
答案 4 :(得分:0)
这很简单:前者main
为static
(p
为小写;-P)
意思很明显:确保入口点在其余部分之前存在,并告诉框架入口点在哪里。
答案 5 :(得分:0)
实际上,static只允许初始化一个主函数的实例。可以在不创建该类的实例的情况下调用所有静态方法。它的全球性。 Main始终是delcared static。
答案 6 :(得分:0)
varargs版本:
public static void main(String... args) {
for (String arg : args) {
System.out.println("Argument: " + arg);
}
}
自Java 5起可用。