1. 程式人生 > >Java中的i++、++i語句

Java中的i++、++i語句

在幾乎所有的指令式程式設計語言中,必然都會有i++和++i這種語法。在程式設計啟蒙教材《C語言程式設計》一書中,也專門解釋了這兩條語句的區別。有些語言中i++和++i既可以作為左值又可以作為右值,筆者專門測試了一下,在Java語言中,這兩條語句都只能作為右值,而不能作為左值。同時,它們都可以作為獨立的一條指令執行。

int i = 0;
int j1 = i++; // 正確
int j2 = ++i; // 正確
i++; // 正確
++i; // 正確

i++ = 5; // 編譯不通過
++i = 5; // 編譯不通過

關於i++和++i的區別,稍微有經驗的程式設計師都或多或少都是瞭解的,為了文章的完整性,本文也通過例項來簡單地解釋一下。

{
    int i = 1;
    int j1 = i++;
    System.out.println("j1=" + j1); // 輸出 j1=1
    System.out.println("i=" + i); // 輸出 i=2
}

{
    int i = 1;
    int j2 = ++i;
    System.out.println("j2=" + j2); // 輸出 j2=2
    System.out.println("i=" + i); // 輸出 i=2
}

上面的例子中可以看到,無論是i++和++i指令,對於i變數本身來說是沒有任何區別,指令執行的結果都是i變數的值加1。而對於j1和j2來說,這就是區別所在。

int i = 1;
int j1 = i++; // 先將i的原始值(1)賦值給變數j1(1),然後i變數的值加1
int j1 = ++i; // 先將i變數的值加1,然後將i的當前值(2)賦值給變數j1(2)