老生常談,運(yùn)算符的優(yōu)先級(jí),除了右結(jié)合的運(yùn)算符之外,同級(jí)的運(yùn)算符要按照從左到右的順序依次計(jì)算。 什么是右結(jié)合的運(yùn)算符呢? 經(jīng)常使用的賦值=,以及派生出來的復(fù)合賦值運(yùn)算符,都是從右到左的運(yùn)算順序,這就是右結(jié)合符號(hào)。不少參考書里都有個(gè)表,有的時(shí)候很多jb破書,炫耀很多一系列的運(yùn)算符,弄一大堆在一個(gè)大……長(zhǎng)串的表達(dá)式上,講解這個(gè)順序那個(gè)順序的,jb毛線用處都沒有,純粹就是占據(jù)字?jǐn)?shù)的sb,不解釋,我把這些運(yùn)算符的優(yōu)先級(jí)梳理記憶和總結(jié)下;
1、眾所周知,一般情況下有括號(hào)()就是級(jí)別最高的!先算括號(hào)里的,比如; System.out.println(2 2 / 2);
System.out.println((2 2) / 2); 打??;3和2
2、然后看表,最高級(jí)別的是數(shù)組下標(biāo)【】、對(duì)象或者方法的調(diào)用 . 、方法的參數(shù)調(diào)用運(yùn)算符(),這些都是從左到右的。 3、記住一點(diǎn),正負(fù)號(hào),非!,按位取反~,自增,自減,強(qiáng)制類型轉(zhuǎn)換,new這是一個(gè)級(jí)別的,從左到右。 4、然后是最熟悉的加減乘除,按照數(shù)學(xué)的規(guī)則,先乘除后加減,同級(jí)的按照順序,只不過這里多了個(gè)模運(yùn)算%,和乘除一個(gè)級(jí)別的而已。也就是先乘除模,再加減而已。 5、然后是移位的,左移,右移,無符號(hào)右移是一個(gè)級(jí)別的。 6、關(guān)系運(yùn)算符,也就是比較大小的,外加個(gè)instantof!一個(gè)級(jí)別的。 7、最后的判等==,和不等!=,很好理解,都是先算了,再判等吧……結(jié)合常識(shí)。 8、然后就是很好理解的;與>異或>或>雙與>雙或>三元,注意,三元運(yùn)算符是從右到左的順序。其余的是左到右。細(xì)細(xì)的感覺下,就是這樣! 9、最后就是賦值類的包括復(fù)合的,也是從右到座的順序! int a1 = 10;
int b1 = 11;
System.out.println(a1 = b1 = 3); 等價(jià)于
int a1 = 10;
int b1 = 11;
System.out.println(a1 = (b1 = 3)); 打印結(jié)果是24
注意!java里是沒有逗號(hào)運(yùn)算符的,在fou循環(huán)的表達(dá)式()中的逗號(hào),起的是隔離的作用!
|
|