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