java中的前++和后++的區(qū)別示例代碼詳解
java中的前加加++和后加加++,有很多人搞的很暈,不太明白!今天我舉幾個(gè)例子說(shuō)明下前++和后++的區(qū)別!
其實(shí)大家只要記住一句話(huà)就可以了,前++是先自加再使用而后++是先使用再自加!
前++和后++總結(jié):其實(shí)大家只要記住一句話(huà)就可以了,前++是先自加再使用而后++是先使用再自加!
請(qǐng)大家看下面的例子就明白了!
public class Test {public static void main(String[] args) {//測(cè)試,前加加和后加加//前++和后++總結(jié):其實(shí)大家只要記住一句話(huà)就可以了,前++是先自加再使用而后++是先使用再自加!int age = 6;//先自加,再使用(age先自加1,然后再打印age=7,此時(shí)age的值在內(nèi)存中是7)System.out.println('age=' + ++age);//先使用,再自加(此時(shí)age的值在內(nèi)存中是7,先打印age=7,然后age再自加1,所以此時(shí)打印age=7,但是其實(shí)此時(shí)age的值在內(nèi)存中已經(jīng)是8了)System.out.println('age=' + age++);//此時(shí)打印出來(lái)age=8System.out.println('age=' + age);//先自加,再使用(此時(shí)age在內(nèi)存中的值是8,先自加1,age的值在內(nèi)存中就變成了9,然后再打印age,所以此時(shí)打印出9)System.out.println(++age);//先使用,再自加(此時(shí)age在內(nèi)存中的值是9,先打印出9,然后age再自加1,自加完后,此時(shí)age在內(nèi)存中的值是10)System.out.println(age++);//此時(shí)打印age是10System.out.println(age);int index = 0;String[] names = {'令狐沖', '張無(wú)忌', '韋小寶', '楊過(guò)', '段譽(yù)', '喬峰'};//System.out.println(names[index++]); //打印出令狐沖//System.out.println(names[index]); //打印出張無(wú)忌 //以上兩行代碼注釋掉,那么以下兩行代碼,就會(huì)打印出張無(wú)忌 //如果以上兩行代碼沒(méi)有注釋掉,那么以下兩行代碼,就會(huì)打印出韋小寶 System.out.println(names[++index]); //打印出張無(wú)忌System.out.println(names[index]); //打印出張無(wú)忌 }}
PS:下面看下Java中i++和++i的區(qū)別
說(shuō)來(lái)慚愧,從事開(kāi)發(fā)工作也有一年時(shí)間了,然而在今天的一個(gè)業(yè)務(wù)邏輯里突然發(fā)現(xiàn)原來(lái)我對(duì)i++和++i都沒(méi)有理解,或者說(shuō)我之前的理解是錯(cuò)誤的。這對(duì)于一個(gè)有追求的程序猿是不能容忍的。知道之后,迅速惡補(bǔ)學(xué)習(xí),現(xiàn)在算是徹底的理解了。 這篇文章可能對(duì)于大神沒(méi)什么用,畢竟技術(shù)層次不夠,大神追求的都是思想層面的東西。但對(duì)于一些初學(xué)者的話(huà)還是有一些用的,或者有跟我一樣的已經(jīng)入行一些時(shí)間了,但對(duì)這個(gè)理解模糊的(IT界估計(jì)也就我一個(gè)了 ~~捂臉!)都可以參閱學(xué)習(xí),我寫(xiě)的比較詳細(xì),相信只要你看,就絕對(duì)會(huì)有收獲1, i++ 和++i
?在區(qū)分這兩個(gè)之前,我們先來(lái)了解一下它們的運(yùn)算規(guī)則
int i=1,a=0;
* i++ 先賦值在運(yùn)算,例如 a=i++,先賦值a=i,后運(yùn)算i=i+1,所以結(jié)果是a==1 * ++i 先運(yùn)算在賦值,例如 a=++i,先運(yùn)算i=i+1,后賦值a=i,所以結(jié)果是a==2
看下面程序運(yùn)行結(jié)果,有圖有真相:
public class Test3 {public static void main(String[] args) {int i=1,a=0;System.out.println('a=i++===> '+(a=i++));//1//System.out.println('a=++i===> '+(a=++i));//2}}
這里算是基本了解了,那么我們?cè)趤?lái)一個(gè)練習(xí)讓你更加的理解它們之間的關(guān)系
public class Test3 {public static void main(String[] args) {int y=0;int i =0;y=++y;y=++y;y=++y;y=++y;y=++y;System.out.println('y='+y);i=i++;i=i++;i=i++;i=i++;i=i++;System.out.println('i='+i);}}
附上結(jié)果
是不是感覺(jué)有點(diǎn)轉(zhuǎn)過(guò)轉(zhuǎn)彎來(lái),如果有這種感覺(jué),那么恭喜你(找到跟我之前癥狀相同的了,哈哈),你也得好好理解理解了。下來(lái)是我添加上詳細(xì)注釋的代碼。
public class Test3 {public static void main(String[] args) {int y=0;//注意'='是賦值,'=='才是相等//這里的y=++y 是先運(yùn)算在賦值,先運(yùn)算++y完了后y的值是1,然后在賦值給原來(lái)等于0的yy=++y;// y==0,++y==y+1; 結(jié)果y=++y == y+1 == 0+1 ==1y=++y;// y==1,++y==y+1; 結(jié)果y=++y == y+1 == 1+1 ==2y=++y;// y==2,++y==y+1; 結(jié)果y=++y == y+1 == 2+1 ==3y=++y;// y==3,++y==y+1; 結(jié)果y=++y == y+1 == 3+1 ==4y=++y;// y==4,++y==y+1; 結(jié)果y=++y == y+1 == 4+1 ==5System.out.println('y='+y);//5int i =0;// i==0,i++==0; 結(jié)果i=i++ == (記住先賦值后運(yùn)算)i=i,i=i+1(由于是i++運(yùn)算這里我們輸出的i只取先賦值的結(jié)果也就是i=i)i=i++;i=i++;i=i++;i=i++;i=i++;System.out.println('i='+i);//0System.out.println('================');//1}}
總結(jié)
到此這篇關(guān)于java中的前++和后++的區(qū)別示例代碼詳解的文章就介紹到這了,更多相關(guān)java 前++和后++內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. vue實(shí)現(xiàn)移動(dòng)端返回頂部2. asp讀取xml文件和記數(shù)3. vue 驗(yàn)證兩次輸入的密碼是否一致的方法示例4. xml中的空格之完全解說(shuō)5. 多個(gè)SpringBoot項(xiàng)目采用redis實(shí)現(xiàn)Session共享功能6. python基于scrapy爬取京東筆記本電腦數(shù)據(jù)并進(jìn)行簡(jiǎn)單處理和分析7. python利用opencv實(shí)現(xiàn)顏色檢測(cè)8. CSS自定義滾動(dòng)條樣式案例詳解9. Python如何實(shí)現(xiàn)感知器的邏輯電路10. PHP實(shí)現(xiàn)基本留言板功能原理與步驟詳解
