JAVA基礎(chǔ)之java運(yùn)算符大百科
運(yùn)算符用于執(zhí)行程序代碼運(yùn)算,會(huì)針對(duì)一個(gè)以上操作數(shù)項(xiàng)目來進(jìn)行運(yùn)算。下面介紹JAVA中的運(yùn)算符。
一、算術(shù)運(yùn)算符:
單目:+(取正)-(取負(fù)) ++(自增1) - -(自減1) 雙目:+ - * / %(取余) 三目:a>b?true:false 說明:當(dāng)a大于b的時(shí)候,為true(也就是冒號(hào)之前的值),否則為false;這整個(gè)運(yùn)算符包括一個(gè)關(guān)系運(yùn)算符(可以是“>”"<""!="等等),一個(gè)“?”,一個(gè)“:”,冒號(hào)前后需要有兩個(gè)表達(dá)式或者是值或者是對(duì)象。
二、關(guān)系運(yùn)算:
等于符號(hào):==,不等于符號(hào): != ,大于符號(hào):>, 小于符號(hào):<,大于等于符號(hào): >= ,小于等于符號(hào): <= 。
三、位運(yùn)算符 邏輯運(yùn)算符:
位運(yùn)算符 與(&)、非(~)、或(|)、異或(^)&:當(dāng)兩邊操作數(shù)的位同時(shí)為1時(shí),結(jié)果為1,否則為0。如1100&1010=1000 | :當(dāng)兩邊操作數(shù)的位有一邊為1時(shí),結(jié)果為0,否則為1。如1100|1010=1110 ~:0變1,1變0 ^:兩邊的位不同時(shí),結(jié)果為1,否則為0.如1100^1010=0110 邏輯運(yùn)算符 與(&&)、非(!)、或(||)
四、賦值運(yùn)算符
= += -= *= /= %= &= ^= |= <<= >>=
五、instanceof運(yùn)算符
該運(yùn)算符是雙目運(yùn)算符,左面的操作元是一個(gè)對(duì)象,右面是一個(gè)類。當(dāng)左面的對(duì)象是右面的類創(chuàng)建的對(duì)象時(shí),該運(yùn)算符運(yùn)算結(jié)果是true,否則是false。
六、 運(yùn)算符綜述
Java 的表達(dá)式就是用運(yùn)算符連接起來的符合Java 規(guī)則的式子.運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式中運(yùn)算執(zhí)行的先后順序.例如,x<y&&!z相當(dāng)于(x<y)&&(!z),沒有必要去記憶運(yùn)算符號(hào)的優(yōu)先級(jí)別,在編寫程序時(shí)可盡量的使用括號(hào)來實(shí)現(xiàn)你想要的運(yùn)算次序,以免產(chǎn)生難以閱讀或含糊不清的計(jì)算順序.
運(yùn)算符的結(jié)合性決定了并列相同級(jí)別的運(yùn)算符的先后順序,例如,加減的結(jié)合性是從左到右,8-5+3 相當(dāng)于(8-5)+3.邏輯否運(yùn)算符 的結(jié)合性是右到左, x 相當(dāng)于!(!x).表3.4是Java所有運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。
七 位移運(yùn)算符
<< 帶符號(hào)左移 >>帶符號(hào)右移 >>> 無號(hào)右移
例子:
- int a1 = 8; // 0000 0000 0000 1000
- System.out.println(a1>>>2); //// 0000 0000 0000 0010
輸出為 2
運(yùn)算符優(yōu)先級(jí)
按優(yōu)先級(jí)從高到低排列如下:[ ]、 ( )、 ++、--、 !、 ~、 instanceof、 *、 /、 %、 +、 -、<<、 >>、 >>>、 <>、 < 、=、 >、 \、 ==、 !=、 &、^、& &、 ||、 ? :、= 。
Java強(qiáng)制類型轉(zhuǎn)換
強(qiáng)制和轉(zhuǎn)換
Java語言和解釋器限制使用強(qiáng)制和轉(zhuǎn)換,以防止出錯(cuò)導(dǎo)致系統(tǒng)崩潰。整數(shù)和浮點(diǎn)數(shù)運(yùn)算符間可以來回強(qiáng)制轉(zhuǎn)換,但整數(shù)不能強(qiáng)制轉(zhuǎn)換成數(shù)組或?qū)ο?。?duì)象不能被強(qiáng)制為基本類型。 Java中整數(shù)運(yùn)算符在整數(shù)運(yùn)算時(shí),如果操作數(shù)是long類型,則運(yùn)算結(jié)果是long類型,否則為int類型,絕不會(huì)是byte,short或char型。這樣,如果變量i被聲明為short或byte,i+1的結(jié)果會(huì)是int。如果結(jié)果超過該類型的取值范圍,則按該類型的***值取模。
運(yùn)算符操作
一、運(yùn)算符"+",如果必要?jiǎng)t自動(dòng)把操作數(shù)轉(zhuǎn)換為String型。如果操作數(shù)是一個(gè)對(duì)象,它可定義一個(gè)方法toString()返回該對(duì)象的String方式,例如floata=1.0print(“Thevalueofais”+a+“\n”);+運(yùn)算符用到的例子Strings=“a=”+a;+=運(yùn)算符也可以用于String。注意,左邊(下例中的s1)僅求值一次。s1+=a;//s1=s1+a//若a非String型,自動(dòng)轉(zhuǎn)換為String型。
二、整數(shù)算術(shù)運(yùn)算的異常是由于除零或按零取模造成的。它將引發(fā)一個(gè)算術(shù)異常。下溢產(chǎn)生零,上溢導(dǎo)致越界。例如:加1超過整數(shù)***值,取模后,變成最小值。一個(gè)op=賦值運(yùn)算符,和上表中的各雙目整數(shù)運(yùn)算符聯(lián)用,構(gòu)成一個(gè)表達(dá)式。整數(shù)關(guān)系運(yùn)算符<,>,<=,>=,==和!=產(chǎn)生boolean類型的數(shù)據(jù)。
三、數(shù)組運(yùn)算符數(shù)組運(yùn)算符形式如下:<expression>[<expression>]可給出數(shù)組中某個(gè)元素的值。合法的取值范圍是從0到數(shù)組的長(zhǎng)度減1。
四、對(duì)象運(yùn)算符雙目運(yùn)算符instanceof測(cè)試某個(gè)對(duì)象是否是指定類或其子類的實(shí)例。
例如:
- if(myObjectinstanceofMyClass)
- {
- MyClassanothermyObject=(MyClass)myObject;
- …
- }
是判定myObject是否是MyClass的實(shí)例或是其子類的實(shí)例。
五、浮點(diǎn)運(yùn)算符浮點(diǎn)運(yùn)算符可以使用常規(guī)運(yùn)算符的組合:如單目運(yùn)算符++、--,雙目運(yùn)算符+、-、*和/,以及賦值運(yùn)算符+=,-=,*=,和/=。此外,還有取模運(yùn)算:%和%=也可以作用于浮點(diǎn)數(shù),例如:a%b和a-((int)(a/b)*b)的語義相同。這表示a%b的結(jié)果是除完后剩下的浮點(diǎn)數(shù)部分。只有單精度操作數(shù)的浮點(diǎn)表達(dá)式按照單精度運(yùn)算求值,產(chǎn)生單精度結(jié)果。如果浮點(diǎn)表達(dá)式中含有一個(gè)或一個(gè)以上的雙精度操作數(shù),則按雙精度運(yùn)算,結(jié)果是雙精度浮點(diǎn)數(shù)。
六、布爾運(yùn)算符布爾(boolean)變量或表達(dá)式的組合運(yùn)算可以產(chǎn)生新的boolean值,fales和true(記得是小寫)。單目運(yùn)算符!是布爾非。雙目運(yùn)算符&,|和^是邏輯AND,OR和XOR運(yùn)算符,它們強(qiáng)制兩個(gè)操作數(shù)求布爾值。為避免右側(cè)操作數(shù)冗余求值,用戶可以使用短路求值運(yùn)算符&&和||。
七、用戶可以使用==和!=,賦值運(yùn)算符也可以用&=、|=、^=。三元條件操作符和C語言中的一樣。
八、++運(yùn)算符用于表示直接加1操作。增量操作也可以用加運(yùn)算符和賦值操作間接完成。++lvalue(左值表示lvalue+=1,++lvalue也表示lvalue=lvalue+1。
九、--運(yùn)算符用于表示減1操作。++和--運(yùn)算符既可以作為前綴運(yùn)算符,也可以做為后綴運(yùn)算符。雙目整數(shù)運(yùn)算符是:運(yùn)算符操作**+加-減*乘/除%取模&位與|位或^位異或<<左移 >>右移(帶符號(hào)) >>>添零右移整數(shù)除法按零舍入。除法和取模遵守以下等式: (a/b)*b+(a%b)==a
java運(yùn)算符問題:
&是位
&&是邏輯
當(dāng)&兩邊是整數(shù)時(shí)執(zhí)行的是位運(yùn)算,而兩邊是boolean值時(shí)執(zhí)行的是邏輯運(yùn)算, 如: 3&6 就是執(zhí)行的位運(yùn)算,結(jié)果是一個(gè)整數(shù):
2 true&false 執(zhí)行的就是邏輯運(yùn)算,結(jié)果是一個(gè)boolean值:false &的邏輯運(yùn)算和&&邏輯運(yùn)算是存在一定不同的
&邏輯運(yùn)算時(shí)兩邊都會(huì)計(jì)算的,而&&則在左邊為假時(shí)則直接返的是false不再計(jì)算右邊
舉個(gè)例子:
1:
- int[] a={1,2,3};
- if(a[0]==2&a[3]==4){System.out.println("true")}
2:
- int[] a={1,2,3};
- if(a[0]==2&&a[3]==4){System.out.println("true")}
這兩個(gè)例子中,***個(gè)會(huì)拋出異常,而第二個(gè)則什么不會(huì)輸出也不會(huì)拋異常 這是因?yàn)?**個(gè)例子中if語句中用的是&,所以兩邊的都會(huì)計(jì)算,當(dāng)計(jì)算a[3]==4時(shí)拋出數(shù)組下標(biāo)越界異常。第二個(gè)例子則在計(jì)算***個(gè)式子a[0]==2發(fā)現(xiàn)結(jié)果為假則不再計(jì)算右邊,直接返回false,所以該例子不會(huì)輸出任何東西。
希望通過本文的介紹,能給大家?guī)韼椭?/p>
【編輯推薦】