2015-09-20 138 views

回答

4

我認爲他們的意思是,這是合法的:

public class Test { 
    private int someValue; 

    public int myMethod() { 
     return someValue + anotherValue; 
    } 

    private int anotherValue; 
} 

(它是!)

不過,我認爲這是該網站一個錯誤來形容這爲「 [i] nstance變量可以在使用之前或之後在課程級別聲明「

  1. 短語「在課堂上聲明」是不好的英語語法。

  2. 短語「在課堂上」是不明確的。它可能意味着在課堂上宣佈。然而,它也可能意味着宣佈爲「班級」(即static)變量。(這是矛盾的,不正確的,但...)

  3. 短語「在使用之前或之後」是不明確的。這可能意味着在源代碼文件之前或之後。它也可能意味着在時間意義之前或之後。 (這是不正確的。在運行時,所有對象的實例變量的聲明,並在方法或構造函數體的代碼被執行之前進行初始化。)


雖然他們正試圖說些什麼(我認爲)在這句話中是正確的,他們已經表達得很差,而且這顯然造成了一些讀者的困惑。

+0

這是合法的,但我仍然會如果有人叫警察在我的團隊中做到了。 –

0

實例變量val在行#2中聲明(請注意標記),但在第#1行之前引用。您可以刪除第3行和第2條評論的評論。那麼它也會工作。

這意味着變量val即使在申報之前在行#1考慮使用之後考慮使用,如果你考慮3號線#1行。

public class prog{ 
    //private int val; //line# 3 
     public int getVal() 
     { 
      return val;//line# 1 
     } 
     private int val; //line# 2 
     prog() 
     { 
      val=0; 
     } 
     public static void main(String [] args) 
     { 
      prog obj= new prog(); 
      System.out.println("val:"+obj.getVal()); 
     } 
    } 
0

儘管您的參考文檔很好地解釋了它,但我會添加一些細節以確保完整性。


一個實例變量...

  • 是宣佈類級別
  • 可以有任何的可見性是必要publicprotectedprivate,或者沒有修飾符來表示包-private)
  • 實例化後會收到initial value(也就是說,你沒有實例化字段的值...但是,如果你不實例化一個參考值,你可能會碰到一個NullPointerException

「前或使用後」這句話並沒有太大的意義,但讓我們說明一個場景:

public class Foo { 
    private String word; 

    public void printTheWord() { 
     System.out.println(word); 
    } 
} 

word沒有實例,但因爲它是收到的null的初始值,我們可以使用它。這意味着我們不會得到我們想要的價值,但它會編譯。

將此與局部變量進行對比。下面的代碼不會編譯,因爲word尚未實例化。

public class Foo { 
    public void printTheWord() { 
     String word; 
     System.out.println(word); 
    } 
} 
0

短語「使用前後」。將意味着實例變量適用於整個類,不像局部變量那樣僅限於該方法內部。

它可以在課程開始時聲明或初始化,這通常是最可能的方式。 其他的,在類的內部,可以在使用它的方法的調用之後聲明。

請找到下面的代碼片段,瞭解了一句:

public class InstanceVariable { 

    //declared before 
    int foo=4; 
    public void testInstanceVariableUse(){ 
     System.out.println("The total value of the instance variable is "+ (foo+boo)); 
    } 
    //declared after   
    int boo=5; 
} 


class TestInstanceVariable{ 
    public static void main(String[] args){ 
     InstanceVariable instanceVar = new InstanceVariable(); 
     instanceVar.testInstanceVariableUse(); 
    } 
} 

輸出: 實例變量的總價值爲9

相關問題