static methods只能访问static fields(methods)public class A {
  public void f1(){}
  public static void f2(){}
  public static void main(String[] args) {
    //f1();   //nonstatic,没有产生实例,不能调用
    f2();
    A a1 = new A();
    a1.f1();
    a1.f2();
  }
}

解决方案 »

  1.   

    其實在main方法不能說是這個類中的方法﹐它只能算是一個"入口"函數(我這樣稱呼也不知對不對)﹐它的作用其實只是開始程序的運行。就是說﹐這個main函數寫在那個類中對這個類并沒有影響﹐(當然﹐有main函數的類必須是public類)。你調用了main函數﹐并不是說你已實例化了這個類﹐實際上﹐對這個類的實例化往往都是在main函數中進行的。這就和在本類中調用別的類的方法一樣﹐如果你已經對別的類進行了實例化﹐當然沒有問題﹐但如果沒有實例化﹐普通的方法就不行了﹐而static關鍵字的意思就是如果含有這個方法的類沒有實例化﹐也可以調用這個方法﹐其實﹐main本身就是一個static方法。
    如下
    class A{
      public void m1(){......}
      public static m2(){......}
    }public class B{
      public static void main(String[] args){
        A.m2();     //直接可以調用
        A a = new A();
        a.m1;       //必須生成實例后才能調用
      }
    }