-
为什么 main 方法是 public static void ?
2020-04-19 15:27:59main方法是我们学习Java编程语言时知道的第一个方法,你是否曾经想过为什么main方法是public、static、void的。当然,很多人首先学的是C和C++,但是在Java中main方法与前者有些细微的不同,它不会返回任何值,为什么...main
方法是我们学习Java编程语言时知道的第一个方法,你是否曾经想过为什么main
方法是public、static、void
的。当然,很多人首先学的是C和C++,但是在Java中main方法与前者有些细微的不同,它不会返回任何值,为什么main
方法是public、static、void
,这篇文章尝试去找到一些答案。main
方法是Java程序的入口,记住,我们这里不会讨论Servlet、MIDlet和其他任何容器管理的java程序,在java核心编程中,JVM会查找类中的 public static void main(String[]args),如果找不到该方法就抛出错误NoSuchMethodError:main 程序终止。main
方法必须严格遵循它的语法规则,方法签名必须是public static void
,参数是字符串数组类型,如果是Java1.5及以后的版本还可以使用可变参数:public static void main(String... args)
-
正因为main方法是静态的,JVM调用这个方法就不需要创建任何包含这个main方法的实例。
-
因为C和C++同样有类似的main方法作为程序执行的入口。
-
如果main方法不声明为静态的,JVM就必须创建main类的实例,因为构造器可以被重载,JVM就没法确定调用哪个main方法。
-
静态方法和静态数据加载到内存就可以直接调用而不需要像实例方法一样创建实例后才能调用,如果main方法是静态的,那么它就会被加载到JVM上下文中成为可执行的方法。
Java指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为public,Java可以从该类之外的地方访问。因为main方法是公共的,JVM就可以轻松的访问执行它。
因为main返回任何值对程序都没任何意义,所以设计成void,意味着main不会有任何值返回。
-
main
方法必须声明为public、static、void
,否则JVM没法运行程序 -
如果JVM找不到
main
方法就抛出NoSuchMethodError:main异常,例如:如果你运行命令:java HelloWrold,JVM就会在HelloWorld.class文件中搜索public static void main (String[] args)
方法。 -
main
方法是程序的入口,程序执行的开始处。 -
main
方法被一个特定的线程”main”运行,程序会一直运行直到main线程结束或者non-daemon线程终止。 -
当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException ,意味着异常来自于main线程。
-
你可以声明
main
方法使用java1.5的可变参数的方式如:public static void main(String... args)
-
除了
static、void、和public
,你可以使用final
,synchronized
、和strictfp
修饰符在main
方法的签名中,如:public strictfp final synchronized static void main(String[] args)
-
main
方法在Java可以像其他方法一样被重载,但是JVM只会调用上面这种签名规范的main方法。 -
你可以使用
throws
子句在方法签名中,可以抛出任何checked和unchecked异常。 -
静态初始化块在JVM调用
main
方法前被执行,它们在类被JVM加载到内存的时候就被执行了。
-
-
scala的MAIN方法
2020-02-13 20:53:25MAIN方法 scala和Java一样,如果要运行一个程序,必须有一个main方法。而在Java中main方法是静态的,而在scala中没有静态方法。在scala中,这个main方法必须放在一个单例对象中。 定义Main方法 main方法 scala def ...MAIN方法
scala和Java一样,如果要运行一个程序,必须有一个main方法。而在Java中main方法是静态的,而在scala中没有静态方法。在scala中,这个main方法必须放在一个单例对象中。
定义Main方法
main方法
scala def main(args:Array[String]):Unit = { // 方法体 }
示例
示例说明
创建一个单例对象,在该单例对象中打印"hello, scala"
参考代码
scala object Main5 { def main(args:Array[String]) = { println(“hello, scala”) } }
实现App Trait来定义入口
创建一个object,继承自App Trait(特质),然后将需要编写在main方法中的代码,写在object的构造方法体内。
scala object 单例对象名 extends App { // 方法体 }
示例
示例说明
继承App特质,来实现一个入口。同样输出"hello, scala"
参考代码
scala object Main5 extends App { println(“hello, scala”) }
答案:
-
Java jar包中包含多个main方法,执行指定的main方法
2020-05-07 17:03:11jar包中有多个main方法,执行指定.java文件的main方法: java -cp jar包名 包名.类名 参数 举例: 执行test.jar包中cn.com.test.send包下Send.java中的main方法 参数有四个 java -cp test.jar ...jar包中有多个main方法,执行指定.java文件的main方法:
java -cp jar包名 包名.类名 参数
举例:
执行test.jar包中cn.com.test.send包下Send.java中的main方法 参数有四个java -cp test.jar cn.com.test.send.Send 100 100 100 100
-
Java main方法
2015-07-28 15:38:52public static void main(String args[]) {}main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,在按住Alt+...public static void main(String[] args) {}
或者
main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,在按住Alt+/的方式快速创建main方法。可以说main方法是最简单的方法,因为main方法几乎是固定不变得,除了String[] args可以写成String args[],以及args的名称可以改变外,其它所有均不改变。main方法也是特殊的,因为它的类型必须是public static void,甚至名字都必须是main,还有括号内的参数String[] args,很多初学者都不知道它的作用。正是这种简单而特殊的性质,往往容易让人对它产生忽视以及疑惑。下面就详细谈谈java main方法:public static void main(String args[]) {}
根据Java语言规范,main方法必须声明为public。但是在JavaSE1.4以前的版本中,当main方法不是public时,有些版本的Java解释器也可以执行Java应用程序。详见http://bugs.sun.com/bugdatabase/index.jsp,bug号码4252539。当时SUN公司的工程师解释说,Java虚拟机规范并没有要求main方法一定是public。以上只是写出来,丰富一下兴趣。如果有人说Java main方法从来只能用public,那样说实际上还是错的,因为以前出过这么个BUG。但是在1.4版本之后main方法已经被强制成了public,所以现在我们看到的main方法只能是public。
public是一种访问权限修饰符,public中文翻译共有,正如它的实际意思一样,在Java里面所有被public修饰的方法,类等都可以在任意其他地方调用。main方法之所以是public,是因为一个Java程序在运行时首先创建一个JVM实例,程序要运行需要调用main方法,JVM从外部调用main方法这就需要访问权限修饰符必须给出外部访问的权限,所以只能用public。
static的定义是为了JVM在调用main方法时不用实例化对象,只需要在初始时加载main方法所在类,然后直接通过类名.main来调用main方法。
void表示main方法没有返回值,没有返回值的原因是因为Java不需要main方法向操作系统返回退出信息。如果main方法正常退出,那么Java应用层序的退出代码为0,表示成功的运行了程序。
main的名称不能变是为了JVM能够识别程序运行的起点,main方法可以被重载,重载的main方法不会被执行。main方法作为程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程,非守护线程和守护线程,main方法属于非守护线程,守护线程通常由JVM自己使用,Java程序也可以表明自己的线程是守护线程。当程序中所有的非守护线程终止时,JVM退出。也可以用Runtime类或者System.exit()来退出。
String[] args,是main方法中唯一可以改变的地方!args是arguments的缩写,只是一个变量默认名,习惯性写作它,但是也可以改变的,只要符合命名规则随便你写成什么。在使用集成开发工具的今天,String[] args更像是一种摆设了,很多初学者都不知道它的作用,其实它是程序运行传入的一个参数组。一个简单的例子:
用文本工具如下代码并将其保存为Test.java
以管理员身份运行CMD,因为我的Test.java是直接保存在F盘中的,输入f:跳转到目录,输入Javac Test.java将其编译为Test.class文件public class Test{ public static void main(String[] args){ System.out.println("获取数组args[]的数据"); for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } }
然后输入java Test 5 4 3 2 f xx,获取输出数据
Java中所有方法的代码都是从“{”开始,以“}”结束。
-
Scala进阶_main方法与apply方法
2020-02-16 11:48:52main方法 scala和Java一样,如果要运行一个程序,必须有一个main方法。而在Java中main方法是静态的,而在scala中没有静态方法。在scala中,这个main方法必须放在一个单例对象中。 定义main方法 main方法 def main... -
执行jar包中指定main方法
2018-08-29 15:16:38通过maven将应用打成jar包之后,可以通过java -jar ***.jar来执行,会运行指定的main方法,主要是 MANIFEST.MF 中指定的 main 方法;那么如果有多个main方法的时候如何运行指定的main方法哪,可以通过下面命令去... -
java命令行启动main方法项目虚拟机参数设置及main方法参数设置
2018-05-11 21:15:14使用java命令,直接启动main方法类,假设类名为Main.java,则命令为: java Main 如果main方法需要接受一些启动参数,则命令为: java Main [param1] [param2] [param2]... main方法启动时还有可能需要配置... -
错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX...
2018-06-20 15:22:38错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application 看到这样的问题让我一头雾水,因为main方法已经写出 ... -
解决: 在类xxx 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[]
2020-06-08 09:36:16错误: 在类 cn.lizixiang.dbcp.Example01 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application 解决方法:保存一下 ... -
main方法启动spring
2018-07-22 16:28:43public static void main(String[] args) { ApplicationContext ac=new ClassPathXmlApplicationContext("classpath:springmvc.xml"); } 只这一个main方法即可加载所有的bean,如果...这是main方法启... -
理解main方法
2012-12-18 13:45:11理解main方法 方法的定义格式 public static 返回值类型 方法名称(参数列表) 之前的方法定义上都增加了static关键字,为什么要增加static关键字? public class Test4 { public static void main(String... -
找不到main方法 的解决方法
2019-09-18 14:49:42找不到main方法 的解决方法 圈的地方改成always -
main方法详解
2017-05-20 23:50:52学习Java有一段时间了,一直没用过博客来写写自己在学习过程中遇到的问题和学习心得,看到别人在诸如...话不多说,就以main方法详解开始今天的主题吧。 为了表述方便,我先把mian方法写出来: public class Demo -
SpringBoot main方法详解
2018-11-09 23:59:04SpringBoot main方法详解 @SpringBootApplication public class UdeamApplication { public static void main(String[] args) { SpringApplication.run(UdeamApplication.class, args); } } @... -
JAVA中的main方法
2019-03-14 17:22:53main方法关键字解释 public 表示此方法可以被外部调用(访问权限修饰符) static 表示此方法可以直接由类名访问 void 由于main方法是程序的主方法,也就是程序执行的起点,不需要返回值 main 系统规定的默认调用的... -
Java-程序的入口main方法
2018-01-18 15:08:14只有main方法可以作为程序的入口。main方法: public static void main(String[] args) { 方法体 }观察这个方法,可以看出:这是一个public static修饰的方法,所以他是一个静态的方法。返回值是void类型,... -
错误: 在类中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则
2018-11-27 11:08:03错误: 在类 ZiFUChuan.Pyramid 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application 错误原因: 新建的... -
错误: 在类 Hello 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)
2020-07-28 16:51:03作为java小白在编译第一个程序时出现 错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application。 当看到这个报错是... -
java中的main及main方法的参数问题
2018-04-13 12:32:54当一个类中存在main方法的时候,jvm加载类的时候就会执行main方法(这个是java相关规定)。执行的方式是类名.main方法,所以main方法被定义为static。其他更具体的需要我自己深入再了解下public static void main... -
IDEA 类中找不到main方法请将main方法定义为public static void main. 否则 JavaFX 应用程序类必须扩展...
2019-11-15 14:20:46错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application。 但是程序中已经写了main方法,却还是报错 网上所说的... -
java中main方法的作用
2018-06-16 15:51:56main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,在按住Alt+/的方式快速创建main方法。可以说main方法是... -
Java中main方法的理解和执行过程
2020-04-27 17:19:08main方法的格式讲解: public static void main(String[] args) {...} public:公共的,访问权限是最大的。由于main方法是被jvm调用,所以权限要够大。 static:静态的,不需要创建对象,通过类名就可以。方便jvm的... -
Eclipse快捷键:自动生成main方法
2020-02-15 22:07:29方法一:创建类时勾选生成main方法 自动生成的main方法截图: 方法二:输入main后按快捷键alt + / 自动生成的main方法截图: -
main方法不能直接调用 非静态方法
2019-08-31 20:11:12public class Test { public static void main(String [] args) ...main方法是静态方法,静态方法可以在没有对象实例的时候直接调用,故可以直接调用main方法,但是因为没有对象实例,所以不能调用非静态方法。 解决... -
类中找不到main方法请将main方法定义为public static void main. 否则 JavaFX 应用程序类必须扩展javafx....
2018-05-28 21:31:42使用elcipise编写java程序时遇到这样的错误:错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application。但是程序中... -
python 为main方法传参
2020-06-30 10:40:23执行python脚本的时候,想给main方法传入参数的例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author(s): xili # @Created: 2020/6/30 import sys if __name__ == '__main__': history_bin_size = sys... -
运行Scala应用 Main方法
2018-06-20 16:02:08在Java中,一个类要能独立运行,那么必须具有静态的main方法,如下所示。public static void main(String[] args) { ... } Scala借鉴了这种模式。在Scala中,为了运行一个Scala程序,你必须定义一个Scala对象并为... -
多线程之main方法
2018-08-02 14:02:55一个java程序必须有main方法吗? 一个java程序必须有main方法。 一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。比如有个“做菜”程序,那么“ 做菜 ”这个...