點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程第二章匯總
2.11 運(yùn)算符優(yōu)先級(jí)
我們已經(jīng)介紹了運(yùn)算符的優(yōu)先順序,它決定了在語(yǔ)句中運(yùn)算符被執(zhí)行的順序。如3+4*5這樣一個(gè)簡(jiǎn)單的算術(shù)表達(dá)式,因?yàn)槌朔ㄟ\(yùn)算最先執(zhí)行,它的優(yōu)先級(jí)大于加法運(yùn)算,所以該表達(dá)式的結(jié)果為23.我們現(xiàn)在把Java中出現(xiàn)的所有運(yùn)算符進(jìn)行一下歸類。正如下表所示,在Java中的每個(gè)運(yùn)算符都有一個(gè)優(yōu)先級(jí)。優(yōu)先級(jí)較高的運(yùn)算符應(yīng)在優(yōu)先級(jí)較低的運(yùn)算符之前執(zhí)行。優(yōu)先級(jí)最高的運(yùn)算符在表的頭一行,往下依次降低,直至最后一行為最低
在表中出現(xiàn)的絕大多數(shù)運(yùn)算符你可能還沒(méi)有見(jiàn)過(guò),但在學(xué)完本書(shū)后,你就會(huì)全部遇到它們,并且將它們收集在優(yōu)先級(jí)順序表中,在必要的時(shí)候參考一下會(huì)非常方便。
由定義可知,后綴運(yùn)算符++雖然具有很高的優(yōu)先級(jí),但還是在出現(xiàn)它的表達(dá)式中的其他運(yùn)算符操作后才執(zhí)行。在這種情況下,優(yōu)先級(jí)決定它所應(yīng)用的對(duì)象,換句話說(shuō),后綴++只作用于那些在它之前出現(xiàn)的變量。由于這個(gè)原因,我們?cè)谇懊婵吹降谋磉_(dá)式oranges+++apples等價(jià)于(oranges++)+apples,而不是oranges+(++apples).
在一條語(yǔ)句中,優(yōu)先級(jí)相等的運(yùn)算符的執(zhí)行順序,由一個(gè)稱作結(jié)合性的特性決定。在上表中出現(xiàn)在同一行的每組運(yùn)算符,不是左結(jié)合就是右結(jié)合。一個(gè)左結(jié)合運(yùn)算符將與它左邊的操作數(shù)相結(jié)合。這將導(dǎo)致包括幾個(gè)具有相同優(yōu)先級(jí)的左結(jié)合運(yùn)算符的表達(dá)式,等價(jià)于按照從最左向右的順序執(zhí)行。在一個(gè)表達(dá)式中,具有相同優(yōu)先級(jí)的右結(jié)合運(yùn)算符與它右側(cè)操作新相結(jié)合。井日從右向左執(zhí)l行。例如,如奧你寫(xiě)一條語(yǔ)句:a=b+c+10
+運(yùn)算符屬于左結(jié)合組的運(yùn)算符,實(shí)際上隱含為:
a=(b+c)+10
另一方面=和op=是右結(jié)婚運(yùn)算符,所以,發(fā)、如果你有int類型變量,a、b、c和d都初始化為1,語(yǔ)句:
a+=b=c+0=10
結(jié)果a等于12、b和c等于11、d等于10.這條語(yǔ)句等價(jià)于:
a+=(b=(c=(a=10));
注意,這些語(yǔ)句用來(lái)說(shuō)明結(jié)合操作的過(guò)程,我們并不推薦用這種方式編寫(xiě)代碼。
你會(huì)通過(guò)編寫(xiě)程序逐漸學(xué)會(huì)使用Java中運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。你可能需要來(lái)回查詢這個(gè)表,但是,當(dāng)你具有一定經(jīng)驗(yàn)后,就對(duì)運(yùn)算符的運(yùn)算順序有了一定的感覺(jué),最后你能夠自覺(jué)或不自覺(jué)地知道什么時(shí)候需要括號(hào),什么時(shí)候不需要。
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程第一章匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |