對於java的自增運算符,很多人和博主一樣也是初學時各種懵,直到學完後還是半蒙半懂的狀態,對於單獨使用基本上大家都會,但是遇到賦值使用以及參與運算等其他情況可能不運行的話沒有百分百的把握看完代碼就肯定的說出執行結果。
博主總以爲自己弄懂了自增的玩法,但是還是容易忘,弄混淆,這裏就當做記一個筆記了。由於自減其原理和自增一樣,這裏只講自增。
賦值表達式運算
咱們先來看一個後置++的賦值使用example:
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增運算規則的測試類
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
assignmentOperation();
}
/**
* 自增的賦值操作
*/
public static void assignmentOperation() {
//定義一個int類型的初始化值
int num = 10;
//讓其後置自增然後賦值給本身
num = num++;
//打印賦值後的num
System.out.println(num);//這裏打印的num結果是10,而並不是11。
}
}
然後我們換成前置++↓
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增運算規則的測試類
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
assignmentOperation();
}
/**
* 自增的賦值操作
*/
public static void assignmentOperation() {
//定義一個int類型的初始化值
int num = 10;
//讓其前置自增然後賦值給本身
num = ++num;
//打印賦值後的num
System.out.println(num);//這裏打印的num結果是11
}
}
爲什麼會這樣呢?很多初學者看到第一個時肯定第一反應就是打印的num是11,我們都知道後置++是先賦值後自增,所以賦值後num肯定是10,然後表達式執行完畢,num+1變成11,所以打印的肯定是11,博主一開始測試時也是這麼想,但結果瞬間打臉,所以博主認爲,在表達式中,特別是賦值運算,如果後置++賦值給左邊的變量就是它自己本身,那麼賦的值就是它本身未自增的值,而且賦值語句執行完畢後,它自身也不會再自增,前置++也同理,但是如果不是自己本身而是另外一個變量進行後置++然後賦值給num,那麼=右邊執行賦值語句完畢後就會自身+1,也就是下面這種情況↓
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增運算規則的測試類
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
assignmentOperation();
}
/**
* 自增的賦值操作
*/
public static void assignmentOperation() {
//定義一個int類型的初始化值
int num;
//定義一個int類型的臨時自增變量
int tempNum = 10;
//讓tempNum後置自增然後賦值給num
num = tempNum++;
//打印賦值後的num
System.out.println(num);//這裏打印的num結果是10
//打印自增後的tempNum
System.out.println(tempNum);//這裏打印的num結果是11
}
}
所以我們在給一個變量後置++然後又賦值給其自己本身時,賦的值是未自增的值,也就是原本的值,並且賦值表達式語句執行完畢後,=右邊的自增也不會再給賦值後的變量num+1。
自增自減參與運算
很多初學者在參與運算的時候也容易混淆,博主到現在都經常弄錯,尤其是表達式比較複雜的時候,所以覺得有必要記錄一下做個筆記,下面用一個包含了前置和後置的複雜運算進行舉例,代碼如下↓
package com.yfx.entity;
/**
* @Author: Suk
* @Description: 自增運算規則的測試類
* @Date:Created in 17:01 2019/10/2
* @Modified By:
*/
public class AutoIncrementTest {
public static void main(String[] args) {
// assignmentOperation();
autoIncrementOperation();
}
/**
* 自增自減的混合運算
*/
public static void autoIncrementOperation() {
//定義兩個int類型的整數
int firstNum = 11;
int secondNum = 22;
//對其使用自增自減進行混合運算
int result = ++firstNum + secondNum-- - firstNum++ + ++secondNum - --firstNum;
System.out.println(result);//打印的最終運算結果爲32
}
對於有些初學者來說,如果沒學好的話可能和博主一樣會這麼算↓
正確的運算是這樣執行的,下面我畫個圖便於理解↓
如圖所示,在這種混合運算中,有後置自增或者自減的變量的話,實際上參與到運算的是它未自增之前的值,而如果後面還有調用到它進行自增或自減的話那麼取的值是它自增後的值再進行自增或者自減,後面還有的話就以此往後類推。
希望能夠幫助到正在學習se基礎語法的朋友們擺脫混淆。