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的发展历程、其核心组件JVM、跨平台机制以及垃圾回收功能,共同构建了Java成为一种强大且广泛应用的编程语言的基础。了解这些基础知识对于理解和掌握Java编程至关重要。
本文将深入探讨Hessian框架的基础知识,它是一个高效的二进制序列化协议,广泛应用于Java和.NET之间跨语言通信。通过学习Hessian,我们可以更有效地处理数据传输,提高应用性能。 首先,让我们理解什么是序列化。...
Java基础入门篇主要涵盖了一系列关于Java编程语言的基础知识,包括JVM(Java虚拟机)、Java开发环境的搭建、Java的历史、特点、程序类型、垃圾收集器、J2SE的下载和安装,以及环境变量的配置和测试。此外,还会介绍...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
java软件开发——顶岗实习周记篇.doc
【Java基础篇——三大特性(继承)】 Java作为一种面向对象的编程语言,其核心思想是通过类(class)来封装数据和功能,实现代码的复用。在Java中,继承是面向对象三大特性(封装、继承、多态)之一,它允许一个类...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
循环彩灯的编程设计,单片机实验基础篇中必须要做到的实验
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
java软件开发——顶岗实习周记25篇.pdf
本章内容是《Java语言程序设计教程(Java 7)——入门与提高篇02》的核心部分,主要围绕Java的基本编码能力培养。在编写有效、高质量的Java代码之前,了解如何表示信息、处理信息,以及如何利用选择结构、循环结构、...
描述中的“Java实验报告———JavaSwing编程.pdf”暗示了一篇文档的标题和内容,记录了一次关于Java Swing编程的实验。该文档可能包含实验目的、实验环境配置、实验步骤、实验代码以及实验结果等部分。 由于提供的...
最后,本章通过一个简单的Java程序示例展示了Java程序的组成,即定义类、主方法(main方法)和程序的执行入口。通过编写第一个Java程序,读者可以直观地了解Java程序的结构,并通过运行这个程序来加深对Java程序执行...
在Java编程语言中,"java_贪吃蛇——"是一个典型的控制台游戏项目,它基于经典的游戏机制,玩家通过控制一个不断移动的蛇来吞噬食物,每次吞噬后蛇的长度会增加,游戏区域则保持固定,增加了游戏难度。这篇博客...
Java vs C# —— JSP与ASP.NET简单之比较! 在这篇文章中,我们将比较Java和C#这两种编程语言,并对比JSP和ASP.NET这两种技术栈的优缺点。 Java vs C# Java和C#都是面向对象的编程语言,它们都继承了面向对象编程...
这涉及到Java类的定义,main方法的使用,以及如何编译和运行Java程序。 2. **Java语言基础**: - `JAVA1-2-01`至`JAVA1-2-10`涵盖了基本的算法设计和数据类型操作。例如,阶梯数列、素数判断、阶乘求和、近似值...