`
haowenxin
  • 浏览: 4345 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
社区版块
存档分类
最新评论

java基础篇——众所周知的main方法

阅读更多

      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客 团队成员随时欢迎!

      本文转载来自:http://www.balingke.com/archives/550. html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics