记得以前看过这个问题,好像是因为static函数可以在不建立任何对象的情形下被调用,非static函数只能由对象调用,而main()函数在执行时是没有对象产生的,所以一定要是static的

解决方案 »

  1.   

    static表示只生成一个main()函数的副本,试想程序运行的入口能创建任意个的话,到底从哪个进入,又以怎样的顺序执行呢?
    至于编译能通过是因为syntax上并没有问题,而且你也没有写另一个main()。
      

  2.   

    一个类必须要有main()方法才能被JAVA解释器直接装载运行,JAVA虚拟机在执行main()方法时候不必创建对象,所以该方法必须是static的。
      

  3.   

    很簡單:
          
         main方法並不對任何的對象施加操作,實際上,儅程序開始執行的時候,還不存在任何的對象,靜態的main方法被執行,並構造程序所需要的對象;
         其實這裡的靜態和其他的靜態方法和靜態變量的概念是一樣的,可以舉一反三的
      

  4.   

    明白了static,也就明白了这个问题。
      

  5.   

    static函数不需要实例化类就可以调用,而且main函数是入口点,这时还没有类的实例,所以要声明为static才能够运行。
      

  6.   

    main方法是一个java程序运行时的入口,执行java程序时java虚拟机首先寻找main方法
    然后执行main中的代码,由于此时没有任何对象实例生成,所以main必须是静态方法
      

  7.   

    static,静态。所谓静态就是不需要实例化的,不需要连接对象的方法和变量。有一点类同于C语言里面的static。要是main也要实例化的话,那谁又来实例化main呢?因为main是程序的入口啊!
      

  8.   

    去掉了static的main()就变成了包含它的那个类的一个方法,编译肯定能过,但是程序就没有入口了。JVM中定义的main()原型必须有static void,必须有String[]。
      

  9.   

    很简单.
    static函数不需要实例化类就可以调用,而且main函数是入口点,这时还没有类的实例,所以要声明为static才能够运行
      

  10.   

    编译器从main入口,当然要static了,要不他怎么识别啊
      

  11.   

    意思就是象上边说的,程序运行时最初是要先找到那些static的方法或变量,你可以在这些static方法中来实例化你的类,如果说你的main函数不加static的话程序就无从下手了。
    ^_^