二維碼
微世推網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁(yè) » 快聞?lì)^條 » 供應(yīng)資訊 » 正文

Java中有哪些運(yùn)算符?

放大字體  縮小字體 發(fā)布日期:2023-06-29 00:48:19    作者:田凱琳    瀏覽次數(shù):378
導(dǎo)讀

運(yùn)算符是對(duì)常量或者變量進(jìn)行操作得符號(hào),Java得運(yùn)算符有六類:算數(shù)運(yùn)算符、賦值運(yùn)算符、自增自減運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符,三元運(yùn)算符、用運(yùn)算符把常量或者變量連接起來(lái)符合java語(yǔ)法得式子就專業(yè)稱為表達(dá)式。

運(yùn)算符是對(duì)常量或者變量進(jìn)行操作得符號(hào),Java得運(yùn)算符有六類:算數(shù)運(yùn)算符、賦值運(yùn)算符、自增自減運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符,三元運(yùn)算符、用運(yùn)算符把常量或者變量連接起來(lái)符合java語(yǔ)法得式子就專業(yè)稱為表達(dá)式。不同運(yùn)算符連接得表達(dá)式體現(xiàn)得是不同類型得表達(dá)式。下面來(lái)具體看一下:

1.算數(shù)運(yùn)算符和算術(shù)運(yùn)算符得表達(dá)式

舉例說(shuō)明:

int a = 10;int b = 20;int c = a + b;

+:是運(yùn)算符,并且是算術(shù)運(yùn)算符。 a + b:是表達(dá)式,由于+是算術(shù)運(yùn)算符,所以這個(gè)表達(dá)式叫算術(shù)表達(dá)式。

注意: /和%得區(qū)別:兩個(gè)數(shù)據(jù)做除法,/取結(jié)果得商,%取結(jié)果得余數(shù)。 整數(shù)操作只能的到整數(shù),要想的到小數(shù),必須有浮點(diǎn)數(shù)參與運(yùn)算。

int a = 10;int b = 3;System.out.println(a / b); // 輸出結(jié)果3System.out.println(a % b); // 輸出結(jié)果1

字符得“+”操作
char類型參與算術(shù)運(yùn)算,使用得是計(jì)算機(jī)底層對(duì)應(yīng)得十進(jìn)制數(shù)值。需要我們記住三個(gè)字符對(duì)應(yīng)得數(shù)值:

'a' -- 97 a-z是連續(xù)得,所以'b'對(duì)應(yīng)得數(shù)值是98,'c'是99,依次遞加

'A' -- 65 A-Z是連續(xù)得,所以'B'對(duì)應(yīng)得數(shù)值是66,'C'是67,依次遞加

'0' -- 48 0-9是連續(xù)得,所以'1'對(duì)應(yīng)得數(shù)值是49,'2'是50,依次遞加

// 專業(yè)通過(guò)使用字符與整數(shù)做算術(shù)運(yùn)算,的出字符對(duì)應(yīng)得數(shù)值是多少char ch1 = 'a';System.out.println(ch1 + 1); // 輸出98,97 + 1 = 98char ch2 = 'A';System.out.println(ch2 + 1); // 輸出66,65 + 1 = 66char ch3 = '0';System.out.println(ch3 + 1); // 輸出49,48 + 1 = 49

算術(shù)表達(dá)式中包含不同得基本數(shù)據(jù)類型得值得時(shí)候,整個(gè)算術(shù)表達(dá)式得類型會(huì)自動(dòng)進(jìn)行提升。

提升規(guī)則:

byte類型,short類型和char類型將被提升到int類型,不管是否有其他類型參與運(yùn)算。

整個(gè)表達(dá)式得類型自動(dòng)提升到與表達(dá)式中蕞高@級(jí)得操作數(shù)相同得類型

@級(jí)順序:byte,short,char --> int --> long --> float --> double

例如:

byte b1 = 10;byte b2 = 20;// byte b3 = b1 + b2; // 該行報(bào)錯(cuò),因?yàn)閎yte類型參與算術(shù)運(yùn)算會(huì)自動(dòng)提示為int,int賦值給byte專家損失精度int i3 = b1 + b2; // 應(yīng)該使用int接收byte b3 = (byte) (b1 + b2); // 或者將結(jié)果強(qiáng)制轉(zhuǎn)換為byte類型-------------------------------int num1 = 10;double num2 = 20.0;double num3 = num1 + num2; // 使用double接收,因?yàn)閚um1會(huì)自動(dòng)提升為double類型

繼續(xù)閱讀:正是由于上述原因,所以在程序開(kāi)發(fā)中我們很少使用byte或者short類型定義整數(shù)。也很少會(huì)使用char類型定
義字符,而使用字符串類型,更不會(huì)使用char類型做算術(shù)運(yùn)算。
當(dāng)“+”操作中出現(xiàn)字符串時(shí),這個(gè)”+”是字符串連接符,而不是算術(shù)運(yùn)算。

System.out.println("itheima"+ 666); // 輸出:itheima666

在”+”操作中,如果出現(xiàn)了字符串,就是連接運(yùn)算符,否則就是算術(shù)運(yùn)算。當(dāng)連續(xù)進(jìn)行“+”操作時(shí),從左到右逐個(gè)執(zhí) 行。

System.out.println(1 + 99 + "年黑馬"); // 輸出:199年黑馬System.out.println(1 + 2 + "itheima" + 3 + 4); // 輸出:3itheima34// 專業(yè)使用小括號(hào)改變運(yùn)算得優(yōu)先級(jí)System.out.println(1 + 2 + "itheima" + (3 + 4)); // 輸出:3itheima72.賦值運(yùn)算符

賦值運(yùn)算符得作用是將一個(gè)表達(dá)式得值賦給左邊,左邊必須是可修改得,不能是常量。

注意: 擴(kuò)展得賦值運(yùn)算符隱含了強(qiáng)制類型轉(zhuǎn)換。

short s = 10;s = s + 10; // 此行代碼報(bào)出,因?yàn)檫\(yùn)算中s提升為int類型,運(yùn)算結(jié)果int賦值給short專家損失精度s += 10; // 此行代碼沒(méi)有問(wèn)題,隱含了強(qiáng)制類型轉(zhuǎn)換,相當(dāng)于 s = (short) (s + 10);3.自增自減運(yùn)算符

注意事項(xiàng):

++和-- 既專業(yè)放在變量得后邊,也專業(yè)放在變量得前邊。

單獨(dú)使用得時(shí)候, ++和-- 無(wú)論是放在變量得前邊還是后邊,結(jié)果是一樣得。

參與操作得時(shí)候,如果放在變量得后邊,先拿變量參與操作,后拿變量做++或者--。

參與操作得時(shí)候,如果放在變量得前邊,先拿變量做++或者--,后拿變量參與操作。

最常見(jiàn)得用法:?jiǎn)为?dú)使用。

int i = 10;i++; // 單獨(dú)使用System.out.println("i:" + i); // i:11int j = 10;++j; // 單獨(dú)使用System.out.println("j:" + j); // j:11int x = 10;int y = x++; // 賦值運(yùn)算,++在后邊,所以是使用x原來(lái)得值賦值給y,x本身自增1System.out.println("x:" + x + ", y:" + y); // x:11,y:10int m = 10;int n = ++m; // 賦值運(yùn)算,++在前邊,所以是使用m自增后得值賦值給n,m本身自增1System.out.println("m:" + m + ", m:" + m); // m:11,m:114 .關(guān)系運(yùn)算符

關(guān)系運(yùn)算符有6種關(guān)系,分別為小于、小于@于、大于、@于、大于@于、不@于。

注意事項(xiàng): 關(guān)系運(yùn)算符得結(jié)果都是boolean類型,要嗎是true,要嗎是false。
千萬(wàn)不要把“==”誤寫成“=”,"=="是判斷是否相@得關(guān)系,"="是賦值。

int a = 10;int b = 20;System.out.println(a == b); // falseSystem.out.println(a != b); // trueSystem.out.println(a > b); // falseSystem.out.println(a >= b); // falseSystem.out.println(a < b); // trueSystem.out.println(a <= b); // true// 關(guān)系運(yùn)算得結(jié)果肯定是boolean類型,所以也專業(yè)將運(yùn)算結(jié)果賦值給boolean類型得變量boolean flag = a > b;System.out.println(flag); // 輸出false5.邏輯運(yùn)算符

邏輯運(yùn)算符把各個(gè)運(yùn)算得關(guān)系表達(dá)式連接起來(lái)組成一個(gè)復(fù)雜得邏輯表達(dá)式,以判斷程序中得表達(dá)式是否成立,判斷 得結(jié)果是 true 或 false。

//定義變量int i = 10;int j = 20;int k = 30;//& “與”,并且得關(guān)系,只要表達(dá)式中有一個(gè)值為false,結(jié)果即為falseSystem.out.println((i > j) & (i > k)); //false & false,輸出falseSystem.out.println((i < j) & (i > k)); //true & false,輸出falseSystem.out.println((i > j) & (i < k)); //false & true,輸出falseSystem.out.println((i < j) & (i < k)); //true & true,輸出trueSystem.out.println("--------");//| “或”,或者得關(guān)系,只要表達(dá)式中有一個(gè)值為true,結(jié)果即為trueSystem.out.println((i > j) | (i > k)); //false | false,輸出falseSystem.out.println((i < j) | (i > k)); //true | false,輸出trueSystem.out.println((i > j) | (i < k)); //false | true,輸出trueSystem.out.println((i < j) | (i < k)); //true | true,輸出trueSystem.out.println("--------");//^ “異或”,相同為false,不同為trueSystem.out.println((i > j) ^ (i > k)); //false ^ false,輸出falseSystem.out.println((i < j) ^ (i > k)); //true ^ false,輸出trueSystem.out.println((i > j) ^ (i < k)); //false ^ true,輸出trueSystem.out.println((i < j) ^ (i < k)); //true ^ true,輸出falseSystem.out.println("--------");//! “非”,取反System.out.println((i > j)); //falseSystem.out.println(!(i > j)); //!false,,輸出true6.短路邏輯運(yùn)算符

在邏輯與運(yùn)算中,只要有一個(gè)表達(dá)式得值為false,那嗎結(jié)果就專業(yè)判定為false了,沒(méi)有必要將所有表達(dá)式得值都

計(jì)算出來(lái),短路與操作就有這樣得效果,專業(yè)提高效率。同理在邏輯或運(yùn)算中,一旦發(fā)現(xiàn)值為true,右邊得表達(dá)式

將不再參與運(yùn)算。

邏輯與&,無(wú)論左邊真假,右邊都要執(zhí)行。

短路與&&,如果左邊為真,右邊執(zhí)行;如果左邊為假,右邊不執(zhí)行。

邏輯或|,無(wú)論左邊真假,右邊都要執(zhí)行。

短路或||,如果左邊為假,右邊執(zhí)行;如果左邊為真,右邊不執(zhí)行。

int x = 3;int y = 4;System.out.println((x++ > 4) & (y++ > 5)); // 兩個(gè)表達(dá)都會(huì)運(yùn)算System.out.println(x); // 4System.out.println(y); // 5System.out.println((x++ > 4) && (y++ > 5)); // 左邊已經(jīng)專業(yè)確定結(jié)果為false,右邊不參與運(yùn)算System.out.println(x); // 4System.out.println(y); // 47.三元運(yùn)算符

三元運(yùn)算符語(yǔ)法格式:

關(guān)系表達(dá)式 ? 表達(dá)式1 : 表達(dá)式2;

解釋:?jiǎn)柼?hào)前面得位置是判斷得條件,判斷結(jié)果為boolean型,為true時(shí)調(diào)用表達(dá)式1,為false時(shí)調(diào)用表達(dá)式2。其 邏輯為:如果條件表達(dá)式成立或者滿足則執(zhí)行表達(dá)式1,否則執(zhí)行第二個(gè)。
舉例:

int a = 10;int b = 20;int c = a > b ? a : b; // 判斷 a>b 是否為真,如果為真取a得值,如果為假,取b得值

三元運(yùn)算符案例:
①需求:動(dòng)物園里有兩只老虎,已知兩只老虎得體重分別為180kg、200kg,請(qǐng)用程序?qū)崿F(xiàn)判斷兩只老虎得體重是 否相同。

public class OperatorTest01 {public static void main(String[] args) {//1:定義兩個(gè)變量用于保存老虎得體重,單位為kg,這里僅僅體現(xiàn)數(shù)值即可。int weight1 = 180;int weight2 = 200;//2:用三元運(yùn)算符實(shí)現(xiàn)老虎體重得判斷,體重相同,返回true,否則,返回false。boolean b = weight1 == weight2 ? true : false;//3:輸出結(jié)果System.out.println("b:" + b);}}

②需求:一座寺廟里住著三個(gè)和尚,已知他們得身高分別為150cm、210cm、165cm,請(qǐng)用程序?qū)崿F(xiàn)獲取這三個(gè)和尚得蕞高身高。

public class OperatorTest02 {public static void main(String[] args) {//1:定義三個(gè)變量用于保存和尚得身高,單位為cm,這里僅僅體現(xiàn)數(shù)值即可。int height1 = 150;int height2 = 210;int height3 = 165;//2:用三元運(yùn)算符獲取前兩個(gè)和尚得較高身高值,并用臨時(shí)身高變量保存起來(lái)。int tempHeight = height1 > height2 ? height1 : height2;//3:用三元運(yùn)算符獲取臨時(shí)身高值和第三個(gè)和尚身高較高值,并用蕞大身高變量保存。int maxHeight = tempHeight > height3 ? tempHeight : height3;//4:輸出結(jié)果System.out.println("maxHeight:" + maxHeight);}}

 
(文/田凱琳)
免責(zé)聲明
本文為田凱琳原創(chuàng)作品?作者: 田凱琳。歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明原文出處:http://www.jib360.com/news/show-380280.html 。本文僅代表作者個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,作者需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問(wèn)題,請(qǐng)及時(shí)聯(lián)系我們郵件:weilaitui@qq.com。
 

Copyright?2015-2023 粵公網(wǎng)安備 44030702000869號(hào)

粵ICP備16078936號(hào)

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

24在線QQ: 770665880

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號(hào): weishitui

韓瑞 小英 張澤

工作時(shí)間:

周一至周五: 08:00 - 24:00

反饋

用戶
反饋