如果我在一个项目中有更多文件,我需要将所有字段设为静态?

时间:2011-05-18 15:27:18

标签: java

如果我做一个项目。里面有两个班。例如:X和Y.我把它们做成我想要的,我想在Y中创建一个main方法。只有system.out.printlf中的X和Y值。但它写道,如果我需要将它们设为静态想要运行这个。我试图创建一个只有主类和X Y值的新文件,但它显示错误。我错过了什么?

4 个答案:

答案 0 :(得分:2)

你错过了对象创建。在Y文件中尝试X x = new X();。我建议从here开始阅读一些关于Java的教程。

答案 1 :(得分:0)

main方法声明为static

public static void main(String[] args) {}

main内部,它只能访问封闭类中存在的静态变量。例如,您将看到这个代码:

public class X {
    private int i = 5;

    public static void main(String[] args) {
        System.out.println(i);
    }
}

要完成上述工作,您需要将i声明为static

public class X {
    private static int i = 5;

    public static void main(String[] args) {
        System.out.println(i);
    }
}

更好的方法是这样做:

public class X {
    private int i = 5;

    public X() {
        System.out.println(i);
    }

    public static void main(String[] args) {
         new X();    
    }
}

静态方法只能访问声明为static的静态方法和其他变量。

This文章也可以帮助您了解这里发生了什么。

答案 2 :(得分:0)

我猜这是因为一切都发生在main方法中,这确实是静态的吗? e.g。

public class C {
 int X;
 int Y; //or whatever other type
 ..
 public static void main(String args[]) {
   System.out.print( X ); //this won't work!
 }
}

改为使用这个方法:

public class C {
 int X;
 int Y; //or whatever other type
 ..
 public static void main(String args[]) {
   C inst = new C();
   System.out.print( c.X ); //this will work!
 }
}

答案 3 :(得分:0)

主要方法是静态的,只能 访问类中的静态字段。 非静态字段属于您必须创建的实例/对象:

public class X {
  static int a = 0;
         int b = 0;


  public static void main(String[] args) {
    System.out.println(a);   // OK -> accesses static field
    System.out.println(b);   // compile error -> accesses instance field
    X x = new X();
    System.out.println(x.b); // OK -> accesses b on instance of X
  }
}