2013-08-27 128 views
-7

第一個索引++顯示值「1」而不是「2」。增量運算符java

爲什麼值不會遞增?

任何輸入都會有幫助。

package scratch; 

    class Feline { 
     { 
      index = 1; 
     } 
      int index; 
      public static void main(String[] args) { 
       new Feline().go(); 
      } 

     void go(){ 
      System.out.println(index); 
      System.out.println(index++); 
      System.out.println(index++); 
      System.out.println(index++); 
     } 
     } 

Result: 
1 
1 
2 
3 
+11

因爲它打印,*然後*增量。 '++ index'會增加,然後*打印。後綴與前綴。 –

+2

你甚至試過尋找這個嗎? –

回答

6

由於您使用的是後出現的變量遞增遞增運算符++。它的值是變量的當前值,然後增量發生。

JLS 15.14.2 covers this:

[T]他值1加到變量的值和所述總和是 存儲回變量。

後綴增量表達式的值是 變量的值被存儲在新的值之前。

它會增加 - 在返回當前值之後。

System.out.println(index); 

...只是打印1

System.out.println(index++); 

...打印1然後增量index2

System.out.println(index++); 

...打印2然後增量index3

System.out.println(index++); 

...打印3然後增量index4

0

這就是Post Increment所做的。

  System.out.println(index); 
     System.out.println(index++);//printed index and +1 to the index 
     System.out.println(index++); 
     System.out.println(index++);