資源描述:
《java中的自增和自減(--)運算符》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、有些運算符在JAVA語言中存在著,但是在實際開發(fā)中我們或許很少用到它們,在面試題中卻時常出現(xiàn)它們的身影,對于這些運算符的含義和用法,你是否還記得呢?自增(++)和自減(--)運算符我們先來回答幾個問題吧:Java代碼1.int?i?=?0;??2.int?j?=?i++;??3.int?k?=?--i;??inti=0;intj=i++;intk=--i;這段代碼運行后,i等于多少?j等于多少?k等于多少?太簡單了?好,繼續(xù):Java代碼1.int?i?=?0;??2.int?j?=?i++?+?++i;??3.int?k?=?--i?+?i--
2、;??inti=0;intj=i+++++i;intk=--i+i--;代碼執(zhí)行后i、j、k分別等于多少呢?還是很簡單?好,再繼續(xù):Java代碼1.int?i=0;??2.System.out.println(i++);??inti=0;System.out.println(i++);這段代碼運行后輸出結(jié)果是什么?0?1?Java代碼1.float?f=0.1F;??2.f++;??3.double?d=0.1D;??4.d++;??5.char?c='a';??6.c++;??floatf=0.1F;f++;doubled=0.1D;d++;c
3、harc='a';c++;上面這段代碼可以編譯通過嗎?為什么?如果你能順利回答到這里,說明你對自增和自減運算符的掌握已經(jīng)很好了。為了分析出上面提出的幾個問題,我們首先來回顧一下相關(guān)知識:·自增(++):將變量的值加1,分前綴式(如++i)和后綴式(如i++)。前綴式是先加1再使用;后綴式是先使用再加1。·自減(--):將變量的值減1,分前綴式(如--i)和后綴式(如i--)。前綴式是先減1再使用;后綴式是先使用再減1。在第一個例子中,intj=i++;是后綴式,因此i的值先被賦予j,然后再自增1,所以這行代碼運行后,i=1、j=0;而intk=-
4、-i;是前綴式,因此i先自減1,然后再將它的值賦予k,因此這行代碼運行后,i=0、k=0。在第二個例子中,對于intj=i+++++i;,首先運行i++,i的值0被用于加運算(+),之后i自增值變?yōu)?,然后運行++i,i先自增變?yōu)?,之后被用于加運算,最后將i兩次的值相加的結(jié)果1+2=3賦給j,因此這行代碼運行完畢后i=2、j=2;對于intk=--i+i--;用一樣的思路分析,具體過程在此不再贅述,結(jié)果應(yīng)該是i=0、k=2。自增與自減運算符還遵循以下規(guī)律:1.可以用于整數(shù)類型byte、short、int、long,浮點類型float、doubl
5、e,以及字符串類型char。2.在Java5.0及以上版本中,它們可以用于基本類型對應(yīng)的包裝器類Byte、Short、Integer、Long、Float、Double、Character。3.它們的運算結(jié)果的類型與被運算的變量的類型相同。下面的這個例子驗證以上列出的規(guī)律,它可以編譯通過并執(zhí)行。Java代碼1.public?class?Test?{??2.????public?static?void?main(String[]?args)?{??3.????????//?整型??4.????????byte?b?=?0;??5.????????b
6、++;??6.????????//?整型??7.????????long?l?=?0;??8.????????l++;??9.????????//?浮點型??10.????????double?d?=?0.0;??11.????????d++;??12.????????//?字符串??13.????????char?c?=?'a';??14.????????c++;??15.????????//?基本類型包裝器類??16.????????Integer?i?=?new?Integer(0);??17.????????i++;??1.????}??
7、2.}??publicclassTest{publicstaticvoidmain(String[]args){//整型byteb=0;b++;//整型longl=0;l++;//浮點型doubled=0.0;d++;//字符串charc='a';c++;//基本類型包裝器類Integeri=newInteger(0);i++;}}按位運算符你還能說出來按位運算符一共有哪幾種嗎?對比下面的列表看看,有沒有從你的記憶中消失了的:1.按位與運算(&):二元運算符。當(dāng)被運算的兩個值都為1時,運算結(jié)果為1;否則為0。2.按位或運算(
8、):二元運算符。當(dāng)被
9、運算的兩個值都為0時,運算結(jié)果為0;否則為1。3.按位異或運算(^):二元運算符。當(dāng)被運算的兩個值中任意一個為1,另一個為0時,運算結(jié)果