我在哪里定义我的变量?

时间:2012-11-10 23:14:32

标签: java variables

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

2 个答案:

答案 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; 
  }
}