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