如题

解决方案 »

  1.   

    http://topic.csdn.net/u/20081009/17/e622d55d-552e-4bed-ae91-30370a8d844c.html
      

  2.   

    main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样 test t=new test(); 
    然后才能调用 test.main(); 而这对于运行一个程序的主函数来说是不现实的,所以比如把main函数定义为static,使test.main()可以直接被调用。 
      

  3.   

    为了可以不用new出一个对象而直接调用
      

  4.   


      因为不用实例化main函数
      

  5.   

    因为是程序入口啊  
    不然你从哪里开始new对象 ?
      

  6.   


    所有static成员都是在程序装载时初始化的,被分配在一块静态存储区域。
    这个区域的成员一旦被分配,就不再改变地址啦。直到程序结束才释放。
    main()就存储在这里。
    尽管包含main()的类还没有被实例化,但是main()方法已经可以使用啦。 我觉得这个解释比较合理,另外常驻内存的方式就是使用static,而且main方法是程序的入口,是启动
    Java虚拟机的,所以也没有太多的讨论的价值!个人观点
      

  7.   

    main方法为什么是静态的?无中生有
      

  8.   

    如果main不是静态,在一个Test类下面,我们怎么运行呢。 
    Test t=new Test(); 
    t.main(); 
    这样程序才能运行,....这样不是很麻烦么
      

  9.   

    static在程序中是非常特殊的,無論方法也好,變量也好,首先它不需要實例化即可使用,在Java和 C中 main 是程序的入口,Java很多東西是從 C過來的,一些優秀的東西被Java拿過來直接用了。 舉個例子,就好比 酒店里的房間和你自己家的房間,你住酒店你必須先跟前臺訂,而自己家的房間,你什么時候直接用都可以,這是 static的妙處。
      

  10.   

        static 修饰表示不用创建实例就可以执行.而main方法是程序入口点,你没有进入main方法,自然无法生成一个实例.
      

  11.   

    static不要字面理解為靜態吧,static修飾表明其為類屬方法,至於為什麼我不知道,我的理解和28樓差不多
    你還是基礎搞好了再去深入這些吧
      

  12.   

    static 不用实例化就可以使用,是程序的入口·
      

  13.   

    不是静态的话谁去调用?
    咋知道一运行某个类就启动main方法
      

  14.   


    原来这么多人不知道
    居然有人 认为是规定,但你就没有想过为什么这么规定?
    main函数是程序的入口,难道你让JVM加载他的时候还得先给你建立个对象?
    它比对象诞生的还要早也许不对  哈哈
      

  15.   

    我觉得main就是相当于程序运行的门,不是静态导致java虚拟机无法正确运行程序
      

  16.   

    四楼,你说的也是,但在new的时候,不是又在内存中占用了一块吗?使用static有几个好处:
    1,不用通过NEW方式,创建实例去调用方法;而用类名+方法名就直接可以去调用方法
    2、static修饰的方法、属性在程序加载的时候就能加载到内存中,从效率上相对于,先NEW来说,要快一些
    3、如他人所说,main是程序的入口,就该在调用时,JVM已经为调用者创建好了。
      

  17.   

    可以直接调用main方法,要不然要先创建一个对象,那太累了吧。
      

  18.   

    能否解释一下JVM加载他的时候为什么就不能建立对象啊?
      

  19.   

    不为什么加个static那不是吃饱了没事吗?我想肯定是有原因的,等待高人指点
      

  20.   

    没有什么特殊原因,是SUN公司为JAVA虚拟机制定的开发约定,虚拟机的类加载器不会在乎你有什么类(指的是你自定义的类,以下简称外部类),所以它不会自己去实例化一个外部类,只在乎这个类是否有静态main方法可以作为进程启动入口总而言之,类加载器启动的时候不会实例化类(外部类),它只需要知道在哪个类是堆栈的开始入口(main方法),所以只需要main函数是静态的就行了
      

  21.   

    程序调用时必须要有一个入口,而因为java OOP的特性,必须要有一个对象提供这个入口方法如果这个入口方法不是static,则必须先产生这个对象,比如new一个出来(实例化)但是问题是这个new方法又是哪个对象里来呢?这简直是个鸡生蛋,蛋生鸡的逻辑死循环了。所以java规定,必须要先static出一个main方法,可以在产生对象之前,提空一个方法作为入口所以java的世界,是先有method,然后才有object,哈哈
      

  22.   

    就是这样的:
    JAVA 规定必须new一个对象才能掉用方法的!
    但是程序刚刚准备启动,还没有入口呢,怎么去找构造方法,更谈不上new对象了。
    所以总得有一个特殊吧?main就是那第一个特殊的,他一启动,构造方法就可以启动了,
    就可以new对象了,但以后的就必须new对象才能访问成员(static 除外)。穷人要分!!!!
      

  23.   

    Java是通过虚拟机运行的,不是直接运行在CPU上,直观地说main方法不通过代码(或者CPU)来调用,而是通过命令行,众所周知命令行不具备太多的可编程性,不能实例化出对象,所以就让命令行去执行这个不需要实例化的main方法