溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中的i++和++i的區(qū)別與使用

發(fā)布時(shí)間:2021-09-14 11:00:50 來(lái)源:億速云 閱讀:140 作者:chen 欄目:編程語(yǔ)言

這篇文章主要講解了“Java中的i++和++i的區(qū)別與使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java中的i++和++i的區(qū)別與使用”吧!

書(shū)上對(duì) i ++ 和 ++ i 的解釋如下:

int i = 3,a = 0 ;i ++ : 先賦值再運(yùn)算;例如:a = i ++; 先賦值 a = i ,再運(yùn)算 i = i + 1 ;所以輸出結(jié)果為 a ==3;++ i : 先運(yùn)算再賦值;例如:a = i ++; 先運(yùn)算 i = i + 1 ,再 賦值 a = i ;所以輸出結(jié)果為 a ==4;

懂了嗎?我想大部分人會(huì)跟我一樣 一臉懵逼,明明都 + 1 了,咋上面輸出結(jié)果是 3 下面就是 4 呢?哈哈~不要著急,接下來(lái)我將分享一下我對(duì)它們的理解,希望對(duì)你們有幫助。

認(rèn)識(shí)“++”與“--”

“++”與“--”分別稱作自增操作符和自減操作符,是對(duì)變量進(jìn)行加 1 和減 1 的操作符。

認(rèn)識(shí) i + + 與 i --i++讀為 i 加 加,i--讀為 i 減減,這些操作符分別稱為后置自增操作符和后置自減操作符。

以 i++為例,先來(lái)介紹一下i++, i++ 的計(jì)算方法分為以下5個(gè)步驟

先開(kāi)批一個(gè)臨時(shí)存儲(chǔ)區(qū)  將 i 的值復(fù)制到存儲(chǔ)區(qū)  i 自身+1  臨時(shí)存儲(chǔ)區(qū)的值等待被調(diào)用(參與運(yùn)算、輸出、賦值)  若 i 被調(diào)用則輸出值為 i ,否則輸出 i++

圖解如下:

接下來(lái)我會(huì)舉例說(shuō)明

public class test{ public static void main(String[] args){  int i = 3;  /*  創(chuàng)建一個(gè)變量i,里面放i的初始值3,先開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為3   */  i ++;//i自身加1,此時(shí)i的值為4  System.out.print(i);//打印輸出i,因?yàn)閕沒(méi)有被調(diào)用,故輸出i自身的值4  System.out.print(i++);  /*  上一行代碼中i的值已經(jīng)變成了4,再開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為4,i自身的值+1變?yōu)?;  i++被輸出調(diào)用,故輸出存儲(chǔ)區(qū)的值4  */  int j = i++;  System.out.print(j);  /*  上一行代碼中i的值已經(jīng)變成了5,再開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為5,i自身的值+1變?yōu)?;  i++被賦值調(diào)用,故輸出存儲(chǔ)區(qū)的值5   */  System.out.print(i);//沒(méi)被調(diào)用,故打印值為i自身的值6  i = i++;  System.out.print(i);  /*  上一行代碼中i的值已經(jīng)變成了6,再開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為6,i自身的值+1變?yōu)?;  i++被賦值調(diào)用,故輸出存儲(chǔ)區(qū)的值6   */  i = i++;  System.out.print(i);  /*  上一行代碼中i的值為6,再開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為6,i自身的值+1變?yōu)?;  i++被賦值調(diào)用,故輸出存儲(chǔ)區(qū)的值6   */  }}

同理可得 i- - 的計(jì)算方法如下,

先開(kāi)批一個(gè)臨時(shí)存儲(chǔ)區(qū)  將 i 的值復(fù)制到存儲(chǔ)區(qū)  i 自身 -1  臨時(shí)存儲(chǔ)區(qū)的值等待被調(diào)用(參與運(yùn)算、輸出、賦值)  若 i 被調(diào)用則輸出值為 i ,否則輸出 i - -

舉例說(shuō)明

public class test01{ public static void main(String[] args){  int i = 5;  /*  創(chuàng)建一個(gè)變量i,里面放i的初始值5,先開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為5 */  i--;//i自身減1,此時(shí)i的值為4  System.out.println(i);//打印輸出i,因?yàn)閕沒(méi)有被調(diào)用,故輸出i自身的值4  System.out.print(i--);  /*  上一行代碼中i的值已經(jīng)變成了4,再開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為4,i自身的值-1變?yōu)?;  i--被輸出調(diào)用,故輸出存儲(chǔ)區(qū)的值4  */  int j = i--;  System.out.print(j);//3   /*  上一行代碼中i的值已經(jīng)變成了4,再開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為4,i自身的值-1變?yōu)?;  i--被賦值調(diào)用,故輸出存儲(chǔ)區(qū)的值3   */  System.out.print(i);//沒(méi)被調(diào)用,故打印值為i自身的值3  i = i--;  System.out.print(i);//2  /*  上一行代碼中i的值已經(jīng)變成了3,再開(kāi)辟一個(gè)臨時(shí)存儲(chǔ)區(qū),  將i的值復(fù)制到存儲(chǔ)區(qū),此時(shí)存儲(chǔ)區(qū)里面i的值為3,i自身的值-1變?yōu)?;  i--被賦值調(diào)用,故輸出存儲(chǔ)區(qū)的值2   */ }}

認(rèn)識(shí)+ + i 與 - - i

++i 讀作加加i,--i讀作減減i,分別稱作前置自增操作符和前置自減操作符。相對(duì)于i++來(lái)說(shuō),++i 的運(yùn)算思路比較簡(jiǎn)單,只進(jìn)行簡(jiǎn)單的+1操作即可。

舉例說(shuō)明:

public class test{ public static void main(String[] args){  i = 1;  j = i++ + ++i + ++i + i++;  // 1  3  4  4  /*  i++: 賦值調(diào)用,故打印值為1,臨時(shí)存儲(chǔ)區(qū)放的值為2  ++i:i的值+1,故值為3  ++i:i的值+1,故值為4  i++:賦值調(diào)用,故輸出臨時(shí)存儲(chǔ)區(qū)的值4,i自身值+1為5   */  System.out.print(j);//故輸出結(jié)果為12  System.out.print(i);//沒(méi)有參與調(diào)用,故輸出i自身的值5  System.out.print(++i);//輸出值為6

同理,--i ,也只是在自身基礎(chǔ)上- 1即可。

舉例說(shuō)明:

public class test01{ public static void main(String[] args){  int i = 5;  --i;  System.out.println(i);//i自身減1,值為4  System.out.print(--i);//i自身減1,值為3   }}

使用自增操作符和自減操作符可以使表達(dá)式更加簡(jiǎn)短,但也會(huì)使它們比較復(fù)雜且難以讀懂。比如上述代碼中出現(xiàn)的j = i++ + ++i + ++i + i++;只是為了測(cè)試大家是否更好的掌握了i ++與 ++ i,但在實(shí)際編程過(guò)程中應(yīng)該避免。

我的總結(jié)如下:

i++、i-- :若參與調(diào)用,輸出值不 +1,否則 +1  ++i、--i :無(wú)論是否參與調(diào)用,輸出值均 +1  希望大家在讀懂我上述描述的基礎(chǔ)上,再合理運(yùn)用這兩句話 ~

附:文章開(kāi)頭那道題,現(xiàn)在用我的方法來(lái)做,是不是易如反掌啦~

int i = 3,a = 0 ;

i ++ : 例如:a = i ++;因?yàn)橘x值調(diào)用了,所以輸出值為臨時(shí)存儲(chǔ)區(qū)先復(fù)制的i的值,即 a ==3;

++ i : 例如:a = i ++; 輸出結(jié)果直接 +1 即結(jié)果為 a ==4;

感謝各位的閱讀,以上就是“Java中的i++和++i的區(qū)別與使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java中的i++和++i的區(qū)別與使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI