所以在我的小Java程序中,我已经在main方法中声明了所有变量,但是我希望能够从类中的任何地方修改它们,所以我在类体中声明了它们。现在我无法再在main方法中修改它们了。这个解决方案是否将变量声明为静态?如果我这样做,我仍然可以在main方法中更改这些变量吗?
public class MainGUI
{
int num1= 1366, num2= 528, num3= 482, sum; // declare these static?
public static void main(String args[])
{
sum = num1 + num2+ num3; //compiler tells me "non-static varable cannot be refrenced from a static context"
}
}
答案 0 :(得分:2)
您必须创建一个类的实例才能从java中的静态方法访问非静态变量。
public class MainGUI
{
int num1= 1366, num2= 528, num3= 482, sum; // declare these static?
public static void main(String args[])
{
MainGui m = new MainGUI();
sum = m.num1 + m.num2+ m.num3;
}
}
或使实例变量静态,以便您可以直接访问它们,而无需使用静态方法中的任何实例。
public class MainGUI
{
static int num1= 1366, num2= 528, num3= 482, sum; // declare these static?
public static void main(String args[])
{
sum = num1 + num2+ num3;
}
}
但是,按照惯例,应使用 classname.variablename
访问静态方法的静态变量 sum = MainGUI.num1 + MainGUI.num2 + MainGUI.num3;
请参阅此链接,了解有关different types of variable access
的更好理解答案 1 :(得分:0)
public class MainGUI
{
static int num1= 1366;
..
..
public static void main(String args[])
{
MainGUI.sum = MainGUI.num1 + MainGUI.num2+ MainGUI.num3;
}
}