Java中自增和自減操作符(++/--)的那些事
自增(++)和自減(--)運(yùn)算符
在JAVA語(yǔ)言中存在著很多運(yùn)算符,但是在實(shí)際開(kāi)發(fā)中我們或許很少用到它們,在初次學(xué)習(xí)中卻時(shí)常出現(xiàn)它們的身影,對(duì)于這些運(yùn)算符的含義和用法,是否還記得呢?
1. 概述
自增操作符(++)和自減操作符(--)是對(duì)變量進(jìn)行加1和減1的操作。
2.分類說(shuō)明
++和--是對(duì)變量進(jìn)行自增1和自減1的簡(jiǎn)寫操作符。許多編程任務(wù)中經(jīng)常需要對(duì)變量加1或者減1,所以采用這兩個(gè)操作符會(huì)方便許多。例如,下面的代碼是對(duì)i自增1,而對(duì)j自減1:
int i = 3, j = 3; i++; // i become 4 j--; // j become 2
i++讀為i加加,i--讀為i減減。這些操作符分別稱為后置自增操作符和后置自減操作符,因?yàn)椴僮鞣?+和--放在變量后面。這些操作符也可以放在變量前面,比如:
int i = 3, j = 3; ++i; // i becomes 4 --j; // j becomes 2
--i將i增加1,--j將j減去1。這些操作符稱為前置自增操作符和前置自減操作符。
如你所見(jiàn),前面的例子中,i++和++i的效果,或者i--和--i的效果是一樣的。然而,當(dāng)用在表達(dá)式中不單純只進(jìn)行自增和自減時(shí),他們就會(huì)產(chǎn)生不同的效果。具體如下表,描述了自增和自減操作符的不同之處,并且給出了示例:
操作符 |
名稱 |
描述 |
示例(假設(shè)i=1) |
++var |
前置自增 |
將var加1,在語(yǔ)句中使用新的var值 |
Int j = ++i; // j is 2, i is 2 |
var++ |
后置自增 |
將var加1,但是在語(yǔ)句中使用原來(lái)的var值 |
Int j = i++; // j is 1, i is 2 |
--var |
前置自減 |
將var減1,在語(yǔ)句中使用新的var值 |
Int j = --i; // j is 0, i is 0 |
var-- |
后置自減 |
將var減1,但是在語(yǔ)句中使用原來(lái)的var值 |
Int j = i--; // j is 1, i is 0 |
下面演示前置形式的++(或者--)和后置形式的++(或者--)的補(bǔ)充示例??紤]以下代碼:
int i = 10; int newNum = 10 * i++; //左邊等價(jià)于---》 int newNum = 10 * i; System.out.print("i is " + i //接上條 i = i + 1; + ", newNum is " + newNum);
執(zhí)行輸出:
i is 11, newNum is 100
上述中i自增1,然后返回i原來(lái)的值來(lái)參與乘法運(yùn)算。這樣,newNum的值就為100。如果如下所示將i++換為++i:
int i = 10; int newNum = 10 * (++i); //左邊等價(jià)于---》 i = i + 1; System.out.print("i is " + i //接上條 int newNum = 10 * i; + ", newNum is " + newNum);
執(zhí)行輸出:
i is 11, newNum is 110
上述中 i自增1,然后返回i的新值,并參與乘法運(yùn)算。這樣,newNum的值就為110。
下面是另一個(gè)例子:
double x = 1.0; double y = 5.0; double z = x-- + (++y);
在這三行程序執(zhí)行完之后,y的值為6.0,z的值為7.0,而x的值為0.0。
Java中從左到右對(duì)操作數(shù)求值。在右邊操作數(shù)的任何部分被求值之前,二元操作符左邊的操作數(shù)先求值。這一規(guī)則的優(yōu)先級(jí)高于表達(dá)式的任何其他規(guī)則。下面是一個(gè)例子:
int i = 1; int k = ++i + i * 3; // 分析可知: ++i求值后返回2。當(dāng)求i*3的值時(shí),i是2。因此k的值是8。 //------------對(duì)比以下代碼------------------ int i = 1; int k = i*3 + ++i ; // 分析可知:從左往右,當(dāng)求i*3的值時(shí),i是1,后算++i,++i整體是2。因此k的值是5。
3.總結(jié)
自增在平時(shí)的Java筆試和面試中經(jīng)常作為考查程序員的基礎(chǔ)題多次出現(xiàn),也是比較容易混淆的知識(shí)點(diǎn)。在平時(shí)編程中使用自增操作符和自減操作符可以使表達(dá)式更加簡(jiǎn)短,但也會(huì)使他們比較復(fù)雜且難以讀懂。應(yīng)該避免在同一個(gè)表達(dá)式中使用這些操作符修改多個(gè)變量或多次修改同一個(gè)變量,如int k = ++i + i * 3。
4.說(shuō)明
本文摘自《Java語(yǔ)言程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》(基礎(chǔ)篇)第11版第2章2.14節(jié)內(nèi)容,并由本人結(jié)合實(shí)例并補(bǔ)充擴(kuò)展了一些實(shí)例代碼,本文用于本人學(xué)習(xí)及經(jīng)驗(yàn)總結(jié)。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
java的各種集合為什么不安全(List、Set、Map)以及代替方案
這篇文章主要介紹了java的各種集合為什么不安全(List、Set、Map)以及代替方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10java面試題之try中含return語(yǔ)句時(shí)代碼的執(zhí)行順序詳解
這篇文章主要介紹了關(guān)于java中的一道面試題,這套題就是在try中含return語(yǔ)句時(shí)代碼的執(zhí)行順序,這個(gè)問(wèn)題看似簡(jiǎn)單,卻暗藏殺機(jī)啊!文中通過(guò)一個(gè)個(gè)例子詳細(xì)介紹了其中玄機(jī),需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-04-04基于SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)方式
這篇文章主要介紹了基于SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10Java8中的LocalDateTime和Date一些時(shí)間操作方法
這篇文章主要介紹了Java8中的LocalDateTime和Date一些時(shí)間操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04用java生成html文件實(shí)現(xiàn)原理及代碼
用printStream來(lái)向html文件里輸出數(shù)據(jù),先創(chuàng)建一個(gè)StringBuilder對(duì)象,通過(guò)append方法來(lái)為其添加html語(yǔ)句,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08JavaWeb實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)登錄功能
這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Java并發(fā)編程中的CyclicBarrier線程屏障詳解
這篇文章主要介紹了Java并發(fā)編程中的CyclicBarrier線程屏障詳解,2023-12-12SpringBoot 開(kāi)發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI
這篇文章主要介紹了SpringBoot 開(kāi)發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03