-5

所以在我的小 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"
  }
}
4

2 回答 2

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; 

请参阅此链接以更好地了解不同类型的变量访问

于 2012-11-10T23:16:16.560 回答
0
public class MainGUI
{
  static int num1= 1366;
..
..

  public static void main(String args[])
  {
   MainGUI.sum = MainGUI.num1 + MainGUI.num2+ MainGUI.num3; 
  }
}
于 2012-11-10T23:17:52.173 回答