首先在Java中main函数要被定义为static,那么静态函数和静态对象只能被静态函数所调用,main函数作为静态的函数,是怎么调用其它函数的,难道说其他的函数都是静态的,这似乎不可能。其中的原理忘知道的网友相告。谢谢!!!!

解决方案 »

  1.   

    静态的直接用类来调classname.methodname
    非静态的实例化类  后用对象来调
      

  2.   

    main函数作为静态的函数,调用其它函数A和B,A定义为static,B被定义为Class C中的非静态方法
    JVM启动时会将定义为static的方法加载到内存中,所以这些方法可以直接调用。
    而B方法为非静态方法,内存中也不存在B,故不可以直接调用。只能先创建对象C到内存中,通过C.B()来调用B方法。直接调用B编译是不会通过的。
      

  3.   

    同意楼上的观点JVM启动时先加载静态变量和静态方法非静态需创建对象后才能调用
      

  4.   

    首先在 main中调用静态方法楼主肯定是没有问题的!
     静态方法中调用静态方法这是理所当然的事情。
     而在main中调用示例方法的时候是通过类来建立类的实例,通过将类的对象来引用
     来调用示例方法。
      

  5.   

    Static 一般有二个用法:
      初始化用。 定义成static 属性或static 方法,还有一个就是static 块。
      

  6.   

    静态函数和静态对象只能被静态函数所调用 这句话就是错的啊  静态函数和静态对象可以被非static方法使用
      

  7.   

    这个不是很好理解吗?
    所谓static方法里不能调用非Static方法,是指在static方法中不通过中间手段直接调用非static方法。
    比如,class C {
        void B() {
            //do something here
        }
        static void A() {
            B(); //不通过任何手段直接调用B,这是不允许的
        }
    }但是,如果通过中间手段,即实例化一个类,然后通过该实例化的对象就可以访问该非static方法(函数)了。
    比如,class C {
        void B() {
            //do something here
        }
        static void A() {
            //B(); //不通过任何手段直接调用B,这是不允许的
            C c = new C(); //通过实例化一个类
           c.B(); //然后通过该对象去调用方法,是可以的
        }
    }static方法也较静态方法或类方法,即该类被加载到JVM时,该方法也加载了,而类加载时,非static方法也叫实例方法是不被加载的,必须要实例化后才能调用