2012-11-10 88 views
-5

所以在我的小Java程序中,我已經在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

您定義訪問類中的變量。 – 2012-11-10 23:15:50

+0

Java的精益基礎知識。 –

回答

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

+0

謝謝!說得通。 – lightice11

+0

@ lightice11歡迎您。並請閱讀其他人提到的有關變量訪問的內容。 – PermGenError

0
public class MainGUI 
{ 
    static int num1= 1366; 
.. 
.. 

    public static void main(String args[]) 
    { 
    MainGUI.sum = MainGUI.num1 + MainGUI.num2+ MainGUI.num3; 
    } 
} 
+0

感謝您指出:) –

+0

無需調用類名稱,類內部本身 – Mordechai

相關問題