main方法可以说是每个java初学者最先接触的方法了,该方法的定义中必须含有public、static、和void关键字。那 么,为什么要这样定义呢?如果少了一个关键字(比如少了public或static),程序是否还能正常运行呢?如果不能,那么是在什么时候出现错误,是 在编译时,还是运行时?把main方法定义成这样,是否意味着这是一个很特殊的方法呢?我们来看一个简单的例子。
main方法的基本原型
public class MainMethod { public static void main(String[] args) { System.out.println(“This is main method”); System.out.println(“It’s public,static,and void.”); } }
上面的程序只是简单地输出了两句话:
This is main method
It’s public,static,and void.
作为应用程序入口的main方法,其格式定义为:public static void main(String[] args) 或者public static void main(String args[] ) ,这样定义的原因如下。
- public:main方法是在程序启动时由java虚拟机调用的,所以应声明为public。
- static:既然是方法,那么就应当通过指向对象的引用来访问,否则,就应该将方法声明为static。main方法这样声明是因为无需生成对象实例便可由java虚拟机直接调用。例如在本例中,我们并没有生成MainMethod累的任何实例。
- void:main方法在退出时,没有给出退出代码,而是在需要时使用System.exit(int status)方法返回,所以返回类型为void。
- String[] args:此字符串数组用来运行时接收用户输入的参数,具体长度取决于用户输入参数的个数,如果用户没有输入参数,那么args数组长度为0(并非为null)。
修改main方法原型
现在,我们将上例中代码的第2行修改如下(去掉public):static void main(String[] args) {
编译程序,没有发现错误,但运行时,屏幕显示了如下信息:Main method not public.由此说明,mian方法必须为public,否则java虚拟机无法调用。接着修改第2行的代码(还原public,但去掉static):public void main(String[] args) {
编译程序,同样没有错误,但也不能正常运行:
Exception in thread “main” java.lang.NoSuchMethodError:main
因为java虚拟机要调用的是带有static的main方法,而程序中的main方法与标准的main方法不能完全吻合,即找不到需要调用的 main方法,所以会给出错误信息,修改main方法的返回类型(如改为int)或是修改main方法的参数(如改为无参)也会出现与无static的 main方式相同的错误。
main方法是应用程序的入口方法,在程序运行时由java虚拟机调用,除此之外与普通的静态方法没什么不同。main方法可以重载,被其他方法所 调用,也可以由子类继承,或在子类中重新定义(隐藏父类的main方法)。从一个众所周知的main方法,可以引导出这么多细节变化来,真的是小入口有大 突破,现在应该对main方法有更深入的了解了吧!有什么问题或见解,欢迎来八零客团队博客来讨论,80客 团队成员随时欢迎!
相关推荐
Java 的跨平台原理: Java 源代码---编译--->java 字节码(可跨平台) ---运行--->JVM(java 虚拟机)→Windows,Linux 等平台。JVM 屏蔽了底层运行平台的差别,实现了“以此编译,随处运行”。 垃圾回收器: 不...
NULL 博文链接:https://qinghua0208.iteye.com/blog/493516
Java三大特性我会用自己理解给大家一一介绍,有兴趣的可以关注一下,可以让...Java基础篇——三大特性(继承):https://blog.csdn.net/weixin_45629315/article/details/105876883 养成习惯先点赞后观看!!!!
Java学习流程——基础篇目录参考链接基本概念注意事项编译与运行编译执行基本数据类型内置数据类型引用类型常量定义参考链接Java基础语法Java基本数据类型基本
JAVA遇见HTML——JSP篇基本概念 初学适用
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
打造JAVA开发环境——EditPlus篇
Win7主题制作基础篇——win7主题认知.pdf
java软件开发——顶岗实习周记25篇.pdf
java软件开发——顶岗实习周记篇.doc
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
因为在jdk下bin文件夹中有很多我们在开发中要使用的工具如javaexejavacexejarex等那么我们在使用时想要在电脑的任意位置下使用这些java开发工具那么我们就需有把这些工具所在的路径配置到系统的环境变量中当我们使用...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
java软件开发——顶岗实习周记25篇借鉴.pdf
循环彩灯的编程设计,单片机实验基础篇中必须要做到的实验