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