您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“JAVA有哪些運(yùn)算符”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“JAVA有哪些運(yùn)算符”吧!
算術(shù)一元運(yùn)算一共有 3 個(gè),分別是 -、++ 和 --。 如下表:
運(yùn)算符 | 名稱 | 說(shuō)明 | 例子 |
---|---|---|---|
- | 取反符號(hào) | 取反運(yùn)算 | b=-a |
++ | 自加一 | 先取值再加一,或先加一再取值 | a++ 或 ++a |
-- | 自減一 | 先取值再減一,或先減一再取值 | a-- 或 --a |
代碼示例:
int a = 12;
System.out.println(-a);
int b = a++;
System.out.println(b);
b = ++a;
System.out.println(b);
Java 語(yǔ)言中算術(shù)運(yùn)算符的功能是進(jìn)行算術(shù)運(yùn)算,除了經(jīng)常使用的加(+)、減(-)、乘(*)和除(\)外,還有取模運(yùn)算(%)。如下表:
運(yùn)算符 | 名稱 | 說(shuō)明 | 例子 |
---|---|---|---|
+ | 加 | 求 a 加 b 的和,還可用于 String 類型,進(jìn)行字符串連接操作 | a + b |
- | 減 | 求 a 減 b 的差 | a - b |
* | 乘 | 求 a 乘以 b 的積 | a * b |
/ | 除 | 求 a 除以 b 的商 | a / b |
% | 取余 | 求 a 除以 b 的余數(shù) | a % b |
注:算術(shù)運(yùn)算符都是雙目運(yùn)算符,即連接兩個(gè)操作數(shù)的運(yùn)算符。優(yōu)先級(jí)上,*、/、% 具有相同運(yùn)算級(jí)別,并高于 +、-(+、- 具有相同級(jí)別)。
算術(shù)運(yùn)算時(shí)應(yīng)注意以下兩點(diǎn):
求余(%)運(yùn)算要求參與運(yùn)算的兩個(gè)操作數(shù)均為整型,不能為其他類型。
兩個(gè)整數(shù)進(jìn)行除法運(yùn)算,其結(jié)果仍為整數(shù)。如果整數(shù)與實(shí)數(shù)進(jìn)行除法運(yùn)算,則結(jié)果為實(shí)數(shù)。
代碼示例:
public static void main(String[] args) {
float f1 = 9 % 4;// 保存取余后浮點(diǎn)類型的結(jié)果
double da = 9 + 4.5; // 雙精度加法
double db = 9 - 3.0; // 雙精度減法
double dc = 9 * 2.5; // 雙精度乘法
double dd = 9 / 3.0; // 雙精度除法
double de = 9 % 4; // 雙精度取余
System.out.println("整數(shù)的算術(shù)運(yùn)算"); // 整數(shù)的加、減、乘、除和取余
System.out.printf("9+4=%d \n", 9 + 4);
System.out.printf("9-4=%d \n", 9 - 4);
System.out.printf("9*4=%d \n", 9 * 4);
System.out.printf("9/4=%d \n", 9 / 4);
System.out.printf("9%%4=%d \n", 9 % 4);
System.out.println("\n浮點(diǎn)數(shù)的算術(shù)運(yùn)算"); // 浮點(diǎn)數(shù)的加、減、乘、除和取余
System.out.printf("9+4.5f=%f \n", 9 + 4.5f);
System.out.printf("9-3.0f=%f \n", 9 - 3.0f);
System.out.printf("9*2.5f=%f \n", 9 * 2.5f);
System.out.printf("9/3.0f=%f \n", 9 / 3.0f);
System.out.printf("9%%4=%f \n", f1);
System.out.println("\n雙精度數(shù)的算術(shù)運(yùn)算"); // 雙精度數(shù)的加、減、乘、除和取余
System.out.printf("9+4.5=%4.16f \n", da);
System.out.printf("9-3.0=%4.16f \n", db);
System.out.printf("9*2.5=%4.16f \n", dc);
System.out.printf("9/3.0=%4.16f \n", dd);
System.out.printf("9%%4=%4.16f \n", de);
System.out.println("\n字符的算術(shù)運(yùn)算"); // 對(duì)字符的加法和減法
System.out.printf("'A'+32=%d \n", 'A' + 32);
System.out.printf("'A'+32=%c \n", 'A' + 32);
System.out.printf("'a'-'B'=%d \n", 'a' - 'B');
}
結(jié)果如下:
整數(shù)的算術(shù)運(yùn)算 9+4=13 9-4=5 9*4=36 9/4=2 9%4=1 浮點(diǎn)數(shù)的算術(shù)運(yùn)算 9+4.5f=13.500000 9-3.0f=6.000000 9*2.5f=22.500000 9/3.0f=3.000000 9%4=1.000000 雙精度數(shù)的算術(shù)運(yùn)算 9+4.5=13.5000000000000000 9-3.0=6.0000000000000000 9*2.5=22.5000000000000000 9/3.0=3.0000000000000000 9%4=1.0000000000000000 字符的算術(shù)運(yùn)算 'A'+32=97 'A'+32=a 'a'-'B'=31
運(yùn)算規(guī)則總結(jié)如下:
整數(shù)類型的結(jié)果容易理解,浮點(diǎn)型和雙精度型返回的結(jié)果都帶有小數(shù),字符型將會(huì)把字符轉(zhuǎn)換為 ASCII 碼再運(yùn)算。
整數(shù)之間的運(yùn)算結(jié)果只保留整數(shù)部分,浮點(diǎn)型運(yùn)算時(shí)保留 6 位小數(shù)部分,雙精度運(yùn)算時(shí)則保留 16 位小數(shù)部分。
在一個(gè)表達(dá)式中的多個(gè)算術(shù)運(yùn)算符的優(yōu)先級(jí)別相同,例如“a-b+c”,此時(shí)將按照運(yùn)算符的結(jié)合方向決定順序。算術(shù)運(yùn)算符的結(jié)合方向都是“從左至右”,即先左后右。因此 b 先與減號(hào)結(jié)合,執(zhí)行“a-b”的運(yùn)算,再執(zhí)行加 c 的運(yùn)算。
算術(shù)賦值運(yùn)算符只是一種簡(jiǎn)寫,一般用于變量自身的變化 。如下表:
運(yùn)算符 | 含義 | 實(shí)例 | 結(jié)果 |
---|---|---|---|
+= | 將該運(yùn)算符左邊的數(shù)值加上右邊的數(shù)值, 其結(jié)果賦值給左邊變量本身 | int a=5; a+=2; | a=7 |
-= | 將該運(yùn)算符左邊的數(shù)值減去右邊的數(shù)值, 其結(jié)果賦值給左邊變量本身 | int a=5; a-=2; | a=3 |
*= | 將該運(yùn)算符左邊的數(shù)值乘以右邊的數(shù)值, 其結(jié)果賦值給左邊變量本身 | int a=5; a*=2; | a=10 |
/= | 將該運(yùn)算符左邊的數(shù)值整除右邊的數(shù)值, 其結(jié)果賦值給左邊變量本身 | int a=5; a/=2; | a=2 |
%= | 將該運(yùn)算符左邊的數(shù)值除以右邊的數(shù)值后取余,其結(jié)果賦值給左邊變量本身 | int a=5; a%=2; | a=1 |
代碼示例:
int a = 1;
int b = 2;
a += b; // 相當(dāng)于 a = a + b
System.out.println(a);
a += b + 3; // 相當(dāng)于 a = a + b + 3
System.out.println(a);
a -= b; // 相當(dāng)于 a = a - b
System.out.println(a);
a *= b; // 相當(dāng)于 a=a*b
System.out.println(a);
a /= b; // 相當(dāng)于 a=a/b
System.out.println(a);
a %= b; // 相當(dāng)于 a=a%b
System.out.println(a);
注意:雖然 Java 支持一次為多個(gè)變量賦值的寫法,但這會(huì)導(dǎo)致程序的可讀性降低,因此不推薦寫。
邏輯運(yùn)算符把各個(gè)運(yùn)算的關(guān)系表達(dá)式連接起來(lái)組成一個(gè)復(fù)雜的邏輯表達(dá)式,以判斷程序中的表達(dá)式是否成立,判斷的結(jié)果是 true 或 false 。如下表:
運(yùn)算符 | 用法 | 含義 | 說(shuō)明 | 實(shí)例 | 結(jié)果 |
---|---|---|---|---|---|
&& | a&&b | 短路與 | ab 全為 true 時(shí),計(jì)算結(jié)果為 true,否則為 false。 | 2>1&&3<4 | true |
|| | a||b | 短路或 | ab 全為 false 時(shí),計(jì)算結(jié)果為 false,否則為 true。 | 2<1||3>4 | false |
! | !a | 邏輯非 | a 為 true 時(shí),值為 false,a 為 false 時(shí),值為 true。 | !(2>4) | true |
| | a|b | 邏輯或 | ab 全為 false 時(shí),計(jì)算結(jié)果為 false,否則為 true。 | 1>2|3>5 | false |
& | a&b | 邏輯與 | ab 全為 true 時(shí),計(jì)算結(jié)果為 true,否則為 false。 | 1<2&3<5 | true |
&& 與 & 區(qū)別:如果 a 為 false,則不計(jì)算 b(因?yàn)椴徽?b 為何值,結(jié)果都為 false)
|| 與 | 區(qū)別:如果 a 為 true,則不計(jì)算 b(因?yàn)椴徽?b 為何值,結(jié)果都為 true)
注意:短路與(&&)和短路或(||)能夠采用最優(yōu)化的計(jì)算方式,從而提高效率。在實(shí)際編程時(shí),應(yīng)該優(yōu)先考慮使用短路與和短路或。
結(jié)果為 boolean 型的變量或表達(dá)式可以通過(guò)邏輯運(yùn)算符結(jié)合成為邏輯表達(dá)式。邏輯運(yùn)算符 &&、|| 和 !按下圖進(jìn)行邏輯運(yùn)算。
a | b | a&&b | a||b | !a |
---|---|---|---|---|
true | true | true | true | false |
false | true | false | true | true |
true | false | false | true | false |
false | false | false | false | true |
邏輯運(yùn)算符的優(yōu)先級(jí)為:!運(yùn)算級(jí)別最高,&& 運(yùn)算高于 || 運(yùn)算。!運(yùn)算符的優(yōu)先級(jí)高于算術(shù)運(yùn)算符,而 && 和 || 運(yùn)算則低于關(guān)系運(yùn)算符。結(jié)合方向是:邏輯非(單目運(yùn)算符)具有右結(jié)合性,邏輯與和邏輯或(雙目運(yùn)算符)具有左結(jié)合性。
關(guān)系運(yùn)算符(relational operators)也可以稱為“比較運(yùn)算符”,用于用來(lái)比較判斷兩個(gè)變量或常量的大小。
關(guān)系表達(dá)式是由關(guān)系運(yùn)算符連接起來(lái)的表達(dá)式。關(guān)系運(yùn)算符中“關(guān)系”二字的含義是指一個(gè)數(shù)據(jù)與另一個(gè)數(shù)據(jù)之間的關(guān)系,這種關(guān)系只有成立與不成立兩種可能情況,可以用邏輯值來(lái)表示,邏輯上的 true 與 false 用數(shù)字 1 與 0 來(lái)表示。關(guān)系成立時(shí)表達(dá)式的結(jié)果為 true(或 1),否則表達(dá)式的結(jié)果為 false(或 0)。 如下圖:
運(yùn)算 符 | 含義 | 說(shuō)明 | 實(shí)例 | 結(jié)果 |
---|---|---|---|---|
> | 大于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類型。如果前面變量的值大于后面變量的值, 則返回 true。 | 2>3 | false |
>= | 大于或等于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類型。如果前面變量的值大于等于后面變量的值, 則返回 true。 | 4>=2 | true |
< | 小于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類型。如果前面變量的值小于后面變量的值,則返回 true。 | 2<3 | true |
<= | 小于或等于運(yùn)算符 | 只支持左右兩邊操作數(shù)是數(shù)值類型。如果前面變量的值小于等于后面變量的值, 則返回 true。 | 4<=2 | false |
== | 相等運(yùn)算符 | 如果進(jìn)行比較的兩個(gè)操作數(shù)都是數(shù)值類型,無(wú)論它們的數(shù)據(jù)類型是否相同,只要它們的值相等,也都將返回 true。 如果兩個(gè)操作數(shù)都是引用類型,只有當(dāng)兩個(gè)引用變量的類型具有父子關(guān)系時(shí)才可以比較,只要兩個(gè)引用指向的不是同一個(gè)對(duì)象就會(huì)返回 true。 Java 也支持兩個(gè) boolean 類型的值進(jìn)行比較。 | 4==4 97=='a' 5.0==5 true==false | true true true false |
!= | 不相等運(yùn)算符 | 如果進(jìn)行比較的兩個(gè)操作數(shù)都是數(shù)值類型,無(wú)論它們的數(shù)據(jù)類型是否相同,只要它們的值不相等,也都將返回 true。 如果兩個(gè)操作數(shù)都是引用類型,只有當(dāng)兩個(gè)引用變量的類型具有父子關(guān)系時(shí)才可以比較,只要兩個(gè)引用指向的不是同一個(gè)對(duì)象就會(huì)返回 true。 | 4!=2 | true |
注意 :
基本類型的變量、值不能和引用類型的變量、值使用 == 進(jìn)行比較;boolean 類型的變量、值不能與其他任意類型的變量、值使用 == 進(jìn)行比較;如果兩個(gè)引用類型之間沒有父子繼承關(guān)系,那么它們的變量也不能使用 == 進(jìn)行比較。
== 和 != 可以應(yīng)用于基本數(shù)據(jù)類型和引用類型。當(dāng)用于引用類型比較時(shí),比較的是兩個(gè)引用是否指向同一個(gè)對(duì)象,但當(dāng)時(shí)實(shí)際開發(fā)過(guò)程多數(shù)情況下,只是比較對(duì)象的內(nèi)容是否相當(dāng),不需要比較是否為同一個(gè)對(duì)象。
總結(jié)如下:
關(guān)系表達(dá)式通常用于 Java 程序的邏輯判斷語(yǔ)句的條件表達(dá)式中。使用關(guān)系表達(dá)式要注意以下幾點(diǎn):
運(yùn)算符 >=、==、!=、<= 是兩個(gè)字符構(gòu)成的一個(gè)運(yùn)算符,用空格從中分開寫就會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。例如 x> =y;
是錯(cuò)誤的,但是可以寫成x >= y;
在運(yùn)算符的兩側(cè)增加空格會(huì)提高可讀性。同樣將運(yùn)算符寫反,例如 =>、=<、=! 等形式會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。
由于計(jì)算機(jī)內(nèi)存放的實(shí)數(shù)與實(shí)際的實(shí)數(shù)存在著一定的誤差,如果對(duì)浮點(diǎn)數(shù)進(jìn)行 ==(相等)或 !=(不相等)的比較,容易產(chǎn)生錯(cuò)誤結(jié)果,應(yīng)該盡量避免。
不要將“==”寫成“=”。
關(guān)系運(yùn)算符的優(yōu)先級(jí)為:>、<、>=、<= 具有相同的優(yōu)先級(jí),并且高于具有相同優(yōu)先級(jí)的 !=、==。關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符而低于算術(shù)運(yùn)算符,方向是自左向右。
在對(duì)一個(gè)變量做加 1 或減 1 處理時(shí),可以使用自增運(yùn)算符 ++ 或自減運(yùn)算 --。++ 或 -- 是單目運(yùn)算符,放在操作數(shù)的前面或后面都是允許的。++ 與 -- 的作用是使變量的值增 1 或減 1。操作數(shù)必須是一個(gè)整型或浮點(diǎn)型變量。如下圖:
運(yùn)算符 | 含義 | 實(shí)例 | 結(jié)果 |
---|---|---|---|
i++ | 將 i 的值先使用再加 1 賦值給 i 變量本身 | int i=1; int j=i++; | i=2 j=1 |
++i | 將 i 的值先加 1 賦值給變量 i 本身后再使用 | int i=1; int j=++i; | i=2 j=2 |
i-- | 將 i 的值先使用再減 1 賦值給變量 i 本身 | int i=1; int j=i--; | i=0 j=1 |
--i | 將 i 的值先減 1 后賦值給變量 i 本身再使用 | int i=1; int j=--i; | i=0 j=0 |
在使用自增/自減運(yùn)算時(shí)應(yīng)注意下面幾個(gè)問(wèn)題:
自增/自減只能作用于變量,不允許對(duì)常量、表達(dá)式或其他類型的變量進(jìn)行操作。常見的錯(cuò)誤是試圖將自增或自減運(yùn)算符用于非簡(jiǎn)單變量表達(dá)式中。
自增/自減運(yùn)算可以用于整數(shù)類型 byte、short、int、long,浮點(diǎn)類型 float、double,以及字符串類型 char。
在 Java1.5 以上版本中,自增/自減運(yùn)算可以用于基本類型對(duì)應(yīng)的包裝器類 Byte、Short、Integer、Long、Float、Double 和 Character。
自增/自減運(yùn)算結(jié)果的類型與被運(yùn)算的變量類型相同。
無(wú)論是何種類型,只要是自增和自減運(yùn)算符支持的類型,都可以參與運(yùn)算。
位邏輯運(yùn)算符包含 4 個(gè):&(與)、|(或)、~(非)和 ^(異或)。除了 ~(即位取反)為單目運(yùn)算符外,其余都為雙目運(yùn)算符。 如下圖:
運(yùn)算符 | 含義 | 示例 | 結(jié)果 |
---|---|---|---|
& | 按位進(jìn)行與運(yùn)算(AND) | 4 & 5 | 4 |
| | 按位進(jìn)行或運(yùn)算(OR) | 4 | 5 | 5 |
^ | 按位進(jìn)行異或運(yùn)算(XOR) | 4 ^ 5 | 1 |
~ | 按位進(jìn)行取反運(yùn)算(NOT) | ~ 4 | -5 |
位與運(yùn)算符為&
,其運(yùn)算規(guī)則是:參與運(yùn)算的數(shù)字,低位對(duì)齊,高位不足的補(bǔ)零,如果對(duì)應(yīng)的二進(jìn)制位同時(shí)為 1,那么計(jì)算結(jié)果才為 1,否則為 0。因此,任何數(shù)與 0 進(jìn)行按位與運(yùn)算,其結(jié)果都為 0。
100&0
運(yùn)算過(guò)程如下:
位或運(yùn)算符為|
,其運(yùn)算規(guī)則是:參與運(yùn)算的數(shù)字,低位對(duì)齊,高位不足的補(bǔ)零。如果對(duì)應(yīng)的二進(jìn)制位只要有一個(gè)為 1,那么結(jié)果就為 1;如果對(duì)應(yīng)的二進(jìn)制位都為 0,結(jié)果才為 0。
11|7
運(yùn)算過(guò)程如下:
位異或運(yùn)算符為^,其運(yùn)算規(guī)則是:參與運(yùn)算的數(shù)字,低位對(duì)齊,高位不足的補(bǔ)零,如果對(duì)應(yīng)的二進(jìn)制位相同(同時(shí)為 0 或同時(shí)為 1)時(shí),結(jié)果為 0;如果對(duì)應(yīng)的二進(jìn)制位不相同,結(jié)果則為 1。
11^7
運(yùn)算過(guò)程如下:
注意:在有的高級(jí)語(yǔ)言中,將運(yùn)算符^
作為求冪運(yùn)算符,要注意區(qū)分。
位取反運(yùn)算符為~
,其運(yùn)算規(guī)則是:只對(duì)一個(gè)操作數(shù)進(jìn)行運(yùn)算,將操作數(shù)二進(jìn)制中的 1 改為 0,0 改為 1。
~10
運(yùn)算過(guò)程如下:
位運(yùn)算符的操作數(shù)只能是整型或者字符型數(shù)據(jù)以及它們的變體,不用于 float、double 或者 long 等復(fù)雜的數(shù)據(jù)類型。
位移運(yùn)算符用來(lái)將操作數(shù)向某個(gè)方向(向左或者右)移動(dòng)指定的二進(jìn)制位數(shù)。 如下圖:
運(yùn)算符 | 含義 | 示例 | 結(jié)果 |
---|---|---|---|
? | 右移位運(yùn)算符 | 8?1 | 4 |
? | 左移位運(yùn)算符 | 9?2 | 36 |
左移位運(yùn)算符為?
,其運(yùn)算規(guī)則是:按二進(jìn)制形式把所有的數(shù)字向左移動(dòng)對(duì)應(yīng)的位數(shù),高位移出(舍棄),低位的空位補(bǔ)零。
11 ?1
運(yùn)算過(guò)程如下:
右位移運(yùn)算符為?
,其運(yùn)算規(guī)則是:按二進(jìn)制形式把所有的數(shù)字向右移動(dòng)對(duì)應(yīng)的位數(shù),低位移出(舍棄),高位的空位補(bǔ)零。
11 ? 1
所有的二進(jìn)制位運(yùn)算符都有一種將賦值與位運(yùn)算組合在一起的簡(jiǎn)寫形式。復(fù)合位賦值運(yùn)算符由賦值運(yùn)算符與位邏輯運(yùn)算符和位移運(yùn)算符組合而成。 如下圖:
運(yùn)算符 | 含義 | 示例 | 結(jié)果 |
---|---|---|---|
&= | 按位與賦值 | num1 &= num2 | 等價(jià)于 num 1=num 1 & num2 |
|= | 按位或賦值 | num1 |= num2 | 等價(jià)于 num 1=num 1 | num2 |
^= | 按位異或賦值 | num1 ^= num2 | 等價(jià)于 num 1=num 1 ^ num2 |
-= | 按位取反賦值 | num1 ~= num2 | 等價(jià)于 num 1=num 1 ~ num2 |
?= | 按位左移賦值 | num1 ?= num2 | 等價(jià)于 num 1=num 1 ? num2 |
?= | 按位右移賦值 | num1 ?= num2 | 等價(jià)于 num 1=num 1 ? num2 |
代碼示例:
int a = 1;
int b = 2;
int c = 3;
a &= 4;
a |= 4;
a ^= c;
a -= 6;
b >>= 1;
c <<= 1;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
結(jié)果如下:
a = 1
b = 1
c = 6
Java提供了一個(gè)特別的三元運(yùn)算符(也叫三目運(yùn)算符)經(jīng)常用于取代某個(gè)類型的 if-then-else 語(yǔ)句。條件運(yùn)算符的符號(hào)表示為“?:”,使用該運(yùn)算符時(shí)需要有三個(gè)操作數(shù),因此稱其為三目運(yùn)算符。使用條件運(yùn)算符的一般語(yǔ)法結(jié)構(gòu)為:
result = <expression> ? <statement1> : <statement3>;
其中,expression 是一個(gè)布爾表達(dá)式。當(dāng) expression 為真時(shí),執(zhí)行 statement1, 否則就執(zhí)行 statement3。此三元運(yùn)算符要求返回一個(gè)結(jié)果,因此要實(shí)現(xiàn)簡(jiǎn)單的二分支程序,即可使用該條件運(yùn)算符
到此,相信大家對(duì)“JAVA有哪些運(yùn)算符”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎ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)容。