您好,登錄后才能下訂單哦!
Java的運(yùn)算符可分為4類(lèi):算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符。
算術(shù)運(yùn)算符
Java的算術(shù)運(yùn)算符分為一元運(yùn)算符和二元運(yùn)算符。一元運(yùn)算符只有一個(gè)操作數(shù);二元運(yùn)算符有兩個(gè)操作數(shù),運(yùn)算符位于兩個(gè)操作數(shù)之間。算術(shù)運(yùn)算符的操作數(shù)必須是數(shù)值類(lèi)型。
1、一元運(yùn)算符:
一元運(yùn)算符有:正(+)、負(fù)(-)、加1(++)和減1(--)4個(gè)。
加1、減1運(yùn)算符只允許用于數(shù)值類(lèi)型的變量,不允許用于表達(dá)式中。加1、減1運(yùn)算符既可放在變量之前(如++i),也可放在變量之后(如i++),兩者的差別是:如果放在變量之前(如++i),則變量值先加1或減1,然后進(jìn)行其他相應(yīng)的操作(主要是賦值操作);如果放在變量之后(如i++),則先進(jìn)行其他相應(yīng)的操作,然后再進(jìn)行變量值加1或減1。
例如:
int i=6,j,k,m,n; j = +i;//取原值,即j=6 k = -i;//取負(fù)值,即k=-6 m = i++;//先m=i,再i=i+1,即m=6,i=7 m = ++i;//先i=i+1,再m=i,即i=7,m=7 n = j--;//先n=j,再j=j-1,即n=6,j=5 n = --j;//先j=j-1,再n=j,即j=5,n=5
在書(shū)寫(xiě)時(shí)還要注意的是:一元運(yùn)算符與其前后的操作數(shù)之間不允許有空格,否則編譯時(shí)會(huì)出錯(cuò)。
2、二元運(yùn)算符
二元運(yùn)算符有:加(+)、減(-)、乘(*)、除(/)、取余(%)。其中+、-、*、/完成加、減、乘、除四則運(yùn)算,%是求兩個(gè)操作數(shù)相除后的余數(shù)。
%求余操作舉例:
a % b = a - (a / b) * b
取余運(yùn)算符既可用于兩個(gè)操作數(shù)都是整數(shù)的情況,也可用于兩個(gè)操作數(shù)都是浮點(diǎn)數(shù)(或一個(gè)操作數(shù)是浮點(diǎn)數(shù))的情況。當(dāng)兩個(gè)操作數(shù)都是浮點(diǎn)數(shù)時(shí),例如7.6 % 2.9時(shí),計(jì)算結(jié)果為:7.6 - 2 * 2.9 = 1.8。
當(dāng)兩個(gè)操作數(shù)都是int類(lèi)型數(shù)時(shí),a%b的計(jì)算公式為:
a % b = a - (int)(a / b) * b
當(dāng)兩個(gè)操作數(shù)都是long類(lèi)型(或其他整數(shù)類(lèi)型)數(shù)時(shí),a%b的計(jì)算公式可以類(lèi)推。
當(dāng)參加二元運(yùn)算的兩個(gè)操作數(shù)的數(shù)據(jù)類(lèi)型不同時(shí),所得結(jié)果的數(shù)據(jù)類(lèi)型與精度較高(或位數(shù)更長(zhǎng))的那種數(shù)據(jù)類(lèi)型一致。
例如:
7 / 3 //整除,運(yùn)算結(jié)果為2
7.0 / 3 //除法,運(yùn)算結(jié)果為2.33333,即結(jié)果與精度較高的類(lèi)型一致
7 % 3 //取余,運(yùn)算結(jié)果為1
7.0 % 3 //取余,運(yùn)算結(jié)果為1.0
-7 % 3 //取余,運(yùn)算結(jié)果為-1,即運(yùn)算結(jié)果的符號(hào)與左操作數(shù)相同
7 % -3 //取余,運(yùn)算結(jié)果為1,即運(yùn)算結(jié)果的符號(hào)與左操作數(shù)相同
關(guān)系運(yùn)算符
關(guān)系運(yùn)算符用于比較兩個(gè)數(shù)值之間的大小,其運(yùn)算結(jié)果為一個(gè)邏輯類(lèi)型的數(shù)值。關(guān)系運(yùn)算符有六個(gè):等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)。
例如:
9 <= 8 //運(yùn)算結(jié)果為false
9.9 >= 8.8 //運(yùn)算結(jié)果為true
'A' < 'a' //運(yùn)算結(jié)果為true,因字符'A'的Unicode編碼值小于字符'a'的
要說(shuō)明的是,對(duì)于大于等于(或小于等于)關(guān)系運(yùn)算符來(lái)說(shuō),只有大于和等于兩種關(guān)系運(yùn)算都不成立時(shí)其結(jié)果值才為false,只要有一種(大于或等于)關(guān)系運(yùn)算成立其結(jié)果值即為true。例如,對(duì)于9 <= 8,9既不小于8也不等于8,所以9 <= 8 的運(yùn)算結(jié)果為false。對(duì)于9 >= 9,因9等于9,所以9 >= 9的運(yùn)算結(jié)果為true。
邏輯運(yùn)算符
邏輯運(yùn)算符要求操作數(shù)的數(shù)據(jù)類(lèi)型為邏輯型,其運(yùn)算結(jié)果也是邏輯型值。邏輯運(yùn)算符有:邏輯與(&&)、邏輯或(||)、邏輯非(!)、邏輯異或(^)、邏輯與(&)、邏輯或(|)。
真值表是表示邏輯運(yùn)算功能的一種直觀(guān)方法,其具體方法是把邏輯運(yùn)算的所有可能值用表格形式全部羅列出來(lái)。Java語(yǔ)言邏輯運(yùn)算符的真值表如下:
邏輯運(yùn)算符的真值表
A B A&&B A||B !A A^BA&BA|B
false false false false true false false false
true false false true false true false true
false true false true true true false true
true true true true false false true true
前兩列是參與邏輯運(yùn)算的兩個(gè)邏輯變量,共有4種可能,所以表2.5共有4行。后6列分別是6個(gè)邏輯運(yùn)算符在邏輯變量A和邏輯變量B取不同數(shù)值時(shí)的運(yùn)算結(jié)果值。
要說(shuō)明的是,兩種邏輯與(&&和&)的運(yùn)算規(guī)則基本相同,兩種邏輯或(||和|)的運(yùn)算規(guī)則也基本相同。其區(qū)別是:&和|運(yùn)算是把邏輯表達(dá)式全部計(jì)算完,而&&和||運(yùn)算具有短路計(jì)算功能。所謂短路計(jì)算,是指系統(tǒng)從左至右進(jìn)行邏輯表達(dá)式的計(jì)算,一旦出現(xiàn)計(jì)算結(jié)果已經(jīng)確定的情況,則計(jì)算過(guò)程即被終止。對(duì)于&&運(yùn)算來(lái)說(shuō),只要運(yùn)算符左端的值為false,則因無(wú)論運(yùn)算符右端的值為true或?yàn)閒alse,其最終結(jié)果都為false。所以,系統(tǒng)一旦判斷出&&運(yùn)算符左端的值為false,則系統(tǒng)將終止其后的計(jì)算過(guò)程;對(duì)于 || 運(yùn)算來(lái)說(shuō),只要運(yùn)算符左端的值為true,則因無(wú)論運(yùn)算符右端的值為true或?yàn)閒alse,其最終結(jié)果都為true。所以,系統(tǒng)一旦判斷出|| 運(yùn)算符左端的值為true,則系統(tǒng)將終止其后的計(jì)算過(guò)程。
例如,有如下邏輯表達(dá)式:
(i>=1) && (i<=100)
此時(shí),若i等于0,則系統(tǒng)判斷出i>=1的計(jì)算結(jié)果為false后,系統(tǒng)馬上得出該邏輯表達(dá)式的最終計(jì)算結(jié)果為false,因此,系統(tǒng)不繼續(xù)判斷i<=100的值。短路計(jì)算功能可以提高程序的運(yùn)行速度。
建議讀者:在程序設(shè)計(jì)時(shí)使用&&和||運(yùn)算符,不使用&和|運(yùn)算符。
用邏輯與(&&)、邏輯或(||)和邏輯非(!)可以組合出各種可能的邏輯表達(dá)式。邏輯表達(dá)式主要用在 if、while等語(yǔ)句的條件組合上。
例如:
int i = 1; while(i>=1) && (i<=100) i++;//循環(huán)過(guò)程
上述程序段的循環(huán)過(guò)程將i++語(yǔ)句循環(huán)執(zhí)行100次。
位運(yùn)算符
位運(yùn)算是以二進(jìn)制位為單位進(jìn)行的運(yùn)算,其操作數(shù)和運(yùn)算結(jié)果都是整型值。
位運(yùn)算符共有7個(gè),分別是:位與(&)、位或(|)、位非(~)、位異或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。
位運(yùn)算的位與(&)、位或(|)、位非(~)、位異或(^)與邏輯運(yùn)算的相應(yīng)操作的真值表完全相同,其差別只是位運(yùn)算操作的操作數(shù)和運(yùn)算結(jié)果都是二進(jìn)制整數(shù),而邏輯運(yùn)算相應(yīng)操作的操作數(shù)和運(yùn)算結(jié)果都是邏輯值。
位運(yùn)算示例
運(yùn)算符 名稱(chēng) 示例說(shuō)明
& 位與x&y 把x和y按位求與
| 位或x|y 把x和y按位求或
~ 位非~x 把x按位求非
^ 位異或 x^y 把x和y按位求異或
>> 右移x>>y把x的各位右移y位
<< 左移x<<y把x的各位左移y位
>>> 右移x>>>y 把x的各位右移y位,左邊填0
舉例說(shuō)明:
1、有如下程序段:
int x = 64; //x等于二進(jìn)制數(shù)的01000000 int y = 70; //y等于二進(jìn)制數(shù)的01000110 int z = x&y //z等于二進(jìn)制數(shù)的01000000
即運(yùn)算結(jié)果為z等于二進(jìn)制數(shù)01000000。位或、位非、位異或的運(yùn)算方法類(lèi)同。
2、右移是將一個(gè)二進(jìn)制數(shù)按指定移動(dòng)的位數(shù)向右移位,移掉的被丟棄,左邊移進(jìn)的部分或者補(bǔ)0(當(dāng)該數(shù)為正時(shí)),或者補(bǔ)1(當(dāng)該數(shù)為負(fù)時(shí))。這是因?yàn)檎麛?shù)在機(jī)器內(nèi)部采用補(bǔ)碼表示法,正數(shù)的符號(hào)位為0,負(fù)數(shù)的符號(hào)位為1。例如,對(duì)于如下程序段:
int x = 70; //x等于二進(jìn)制數(shù)的01000110 int y = 2; int z = x>>y //z等于二進(jìn)制數(shù)的00010001
即運(yùn)算結(jié)果為z等于二進(jìn)制數(shù)00010001,即z等于十進(jìn)制數(shù)17。
對(duì)于如下程序段:
int x = -70; //x等于二進(jìn)制數(shù)的11000110 int y = 2; int z = x>>y //z等于二進(jìn)制數(shù)的11101110
即運(yùn)算結(jié)果為z等于二進(jìn)制數(shù)11101110,即z等于十進(jìn)制數(shù)-18。要透徹理解右移和左移操作,讀者需要掌握整數(shù)機(jī)器數(shù)的補(bǔ)碼表示法。
3、0填充的右移(>>>)是不論被移動(dòng)數(shù)是正數(shù)還是負(fù)數(shù),左邊移進(jìn)的部分一律補(bǔ)0。
其他運(yùn)算符
1、賦值運(yùn)算符與其他運(yùn)算符的簡(jiǎn)捷使用方式
賦值運(yùn)算符可以與二元算術(shù)運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符組合成簡(jiǎn)捷運(yùn)算符,從而可以簡(jiǎn)化一些常用表達(dá)式的書(shū)寫(xiě)。
賦值運(yùn)算符與其他運(yùn)算符的簡(jiǎn)捷使用方式
運(yùn)算符 用法 等價(jià)于說(shuō)明
+= s+=is=s+i s,i是數(shù)值型
-= s-=is=s-i s,i是數(shù)值型
*= s*=is=s*i s,i是數(shù)值型
/= s/=is=s/i s,i是數(shù)值型
%= s%=is=s%i s,i是數(shù)值型
&= a&=ba=a&b a,b是邏輯型或整型
|= a|=ba=a|b a,b是邏輯型或整型
^= A^=ba=a^b a,b是邏輯型或整型
<<=s<<=i s=s<<is,i是整型
>>=s>>=i s=s>>is,i是整型
>>>= s>>>=i s=s>>>i s,i是整型
2、方括號(hào)[]和圓括號(hào)()運(yùn)算符
方括號(hào)[]是數(shù)組運(yùn)算符,方括號(hào)[]中的數(shù)值是數(shù)組的下標(biāo),整個(gè)表達(dá)式就代表數(shù)組中該下標(biāo)所在位置的元素值。
圓括號(hào)()運(yùn)算符用于改變表達(dá)式中運(yùn)算符的優(yōu)先級(jí)。
3、字符串加(+)運(yùn)算符
當(dāng)操作數(shù)是字符串時(shí),加(+)運(yùn)算符用來(lái)合并兩個(gè)字符串;當(dāng)加(+)運(yùn)算符的一邊是字符串,另一邊是數(shù)值時(shí),機(jī)器將自動(dòng)將數(shù)值轉(zhuǎn)換為字符串,這種情況在輸出語(yǔ)句中很常見(jiàn)。如對(duì)于如下程序段:
int max = 100; System.out.println("max = "+max);
計(jì)算機(jī)屏幕的輸出結(jié)果為:max = 100,即此時(shí)是把變量max中的整數(shù)值100轉(zhuǎn)換成字符串100輸出的。
4、條件運(yùn)算符(?:)
條件運(yùn)算符(?:)的語(yǔ)法形式為:
<表達(dá)式1> ?<表達(dá)式2> : <表達(dá)式3>
條件運(yùn)算符的運(yùn)算方法是:先計(jì)算<表達(dá)式1>的值,當(dāng)<表達(dá)式1>的值為true時(shí),則將<表達(dá)式2>的值作為整個(gè)表達(dá)式的值;當(dāng)<表達(dá)式1>的值為false時(shí),則將<表達(dá)式3>的值作為整個(gè)表達(dá)式的值。如:
int a=1,b=2,max; max = a>b?a:b; //max等于2
5、強(qiáng)制類(lèi)型轉(zhuǎn)換符
強(qiáng)制類(lèi)型轉(zhuǎn)換符能將一個(gè)表達(dá)式的類(lèi)型強(qiáng)制轉(zhuǎn)換為某一指定數(shù)據(jù)類(lèi)型,其語(yǔ)法形式為:
(<類(lèi)型>)<表達(dá)式>
6、對(duì)象運(yùn)算符instanceof
對(duì)象運(yùn)算符instanceof用來(lái)測(cè)試一個(gè)指定對(duì)象是否是指定類(lèi)(或它的子類(lèi))的實(shí)例,若是則返回true,否則返回false。
7、點(diǎn)運(yùn)算符
點(diǎn)運(yùn)算符“.”的功能有兩個(gè):一是引用類(lèi)中成員,二是指示包的層次等級(jí)。
運(yùn)算符的優(yōu)先級(jí)
以下按優(yōu)先級(jí)從高到低的次序列出Java語(yǔ)言中的所有運(yùn)算符,表中結(jié)合性一列中的“左?右”表示其運(yùn)算次序?yàn)閺淖笙蛴?,“?左”表示其運(yùn)算次序?yàn)閺挠蚁蜃蟆?/p>
優(yōu)先級(jí) 運(yùn)算符 結(jié)合性
1 . [] () ; ,
2 ++ ―― += ! ~ +(一元) -(一元) 右?左
3 * / % 左?右
4 +(二元) -(二元) 左?右
5 << >> >>> 左?右
6 < > <= >= instanceof 左?右
7 = = != 左?右
8 &左?右
9 ^左?右
10 |左?右
11 && 左?右
12 || 左?右
13 ?: 右?左
14 = *= /= %= += -= <<= >>= >>>= &= ^= |= 右?左
以上就是java的運(yùn)算符有哪些?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。