郁闷啊,我所有的公共变量和方法都要申明成static的,否则编译就报错,谁遇到过?谁能帮忙解决一下。

解决方案 »

  1.   

    你不会是在static方法中调用变量和方法吧。
    在static方法中只能调用static变量和方法。
      

  2.   

    我的建议是,尽量少用不必要的公共变量,一个类中,如果有静态方法,那他所调用的所用公共变量和方法都必须是静态的,静态主方法(public static void mian)也一样要满足这个条件
      

  3.   

    你不会是在static方法中调用变量和方法吧。
    在static方法中只能调用static变量和方法。
    同意ffee(短袖)的观点
      

  4.   

    哦,请恕在下冒昧,不过具我估计楼主可能是在main函数中直接调用class field or method了吧?不过不是最清楚楼主的问题,帖段代码模拟一下在下认为楼主可能遇到的情况:
        class Test {
          int i = 10;
          // Print i to console
          public void print() {
            System.out.println("This object's variable i is " + i);
          }
          // Main thread
          public static void main(String[] args) {
            print();  // That's wrong, because the method is non-static.
          }
        }    不知楼主是否是此意思,之所以会这么想是因为看楼主把static field or method 说成是公共变量和方法,static的含义是静态的,不依托于某一类型的单一实体,可以说其在某一类型中是公共的(不过在对象的世界里,实体都有一个界,以说明其归属,所以一般不会使用“公共”之类的词语来描述,这更像是过程开发世界里对全局变量的定义。)
        然后楼主发现将所有的field or method变换成static就可以顺利编译了,代码如下:
        class Test {
          static int i = 10;      public static void print() {
            System.out.println("This object's variable i is " + i);
          }      public static void main(String[] args) {
            print();  // That's right, because the method is static.
          }
        }    修改上述代码使之正确不难,问题出在楼主完全搞混了对象的真正含义,并用过程化的思维编写程序。(如果我的猜测是正确的话)
        事实上,如果你理解了JAVA中的一切都是对象,就像刚才我所说的,所有的实体(对象)必有其界,所以如果使用non-static field or method时,他们必定是属于某一实体,而非公共(欧,原谅我用这个词吧,这里引用他只是为了叙述方便)存在的,要修改其只需在main()中初始化一个对象即可,
    修正代码如下:
        class Test {
          int i = 10; // non-static field      public void print() {
            System.out.println("This object's variable i is " + i);
          }      public static void main(String[] args) {
            // First, initialized one object, when non-static method called.
            Test t = new Test();
            t.print();  // That's right, because the non-static method is bound to one object
          }
        }    以上代码(修正版)运行通过,非常希望我正确的理解了楼主所遇到的麻烦,并且给出的实例也能帮助楼主解决问题。
    @.@||~
      

  5.   

    大概楼主的问题在,在使用类中变量的时候没有生成类的实例而直接想用其中变量。因为我也是初学者,遇到过相似的问题。
    比如: class a{       }
      

  6.   

    比如:
    class a {
      public abc;
      ...
    }
    你想用其中abc变量,但是发现无法引用,就在abc前加上了static,原因就是需要生成对象,
    a x=new a() 这时候你在用x.abc就可以引用了。
    ^_^