2016-02-01 20 views
0

所以在下面的代碼中,如果exam​​pleVar第一次打印出來就是零,那麼一旦再次打印出來,會是兩個是嗎?我試圖不使用全局變量,除此之外,我想不出另一種方式。將一個變量傳遞給一個私有方法會給你的範圍正確的變量?

public int method ... { 
     int exampleVar = 0; 
     System.out.println(exampleVar); // would be zero 
     pmethod(exampleVar,); 
     System.out.println(exampleVar); // would be two? 
     } 

     private int pmethod(int exampleVar) { 
      exampleVar++; 
      if(exampleVar != 2){ 
       pmethod(exampleVar); 
      } 
     } 

回答人都在說這個人是一個duiplicate是無效的,因爲這個問題的答案雖然正確過於嘈雜。使用foo完全抽象和令人困惑的例子。作爲一名Java新手,我已經拒絕了這個問題,因爲它不是一個清晰明確的答案。

回答

0

你的第二個聲明將打印「0」,因爲「exampleVar」有本地範圍,第一種方法。

+0

所以我路過exampleVar到私有方法,並增加其在公共方法不會改變exampleVar的價值? –

+0

即使該方法是'public',它也不會在第一個'public'方法中更改它的值,因爲這是第一個方法的局部變量。要從第二個方法獲取值,可以返回值並將其分配給第一個方法中的'exampleVar'。基本上,你不會共享變量,除非它是全球性的。 – Maryam

+0

我看到那麼我將不得不修改代碼,以便在某些時候 我們pmethod看到例如VAR = pmethod(...)用一個return語句 –