java運算符

?一抬伺、概述

java運算符主要分為六大類:算術(shù)運算符螟够、關(guān)系運算符、邏輯運算符峡钓、位運算符妓笙、賦值運算符和條件運算符。

image.png

Java運算符

二能岩、算術(shù)運算符

Java的算術(shù)運算符主要有:加(+)寞宫、減(-)、乘()拉鹃、除(/)辈赋、取余(%)*,當(dāng)算術(shù)表達(dá)式中存在不同的基本數(shù)據(jù)類型的值的時候膏燕,整個算術(shù)表達(dá)式的類型會自動進(jìn)行提升钥屈。

byte類型,short類型和char類型將被提升到int類型坝辫,不管是否有其他類型參與運算篷就。

整個表達(dá)式的類型自動提升到與表達(dá)式中最高等級的操作數(shù)相同的類型

等級順序:byte,short阀溶,char → int → long → float → double

從這個順序我們可以看出byte腻脏、short、char是最低的银锻,所以在程序開發(fā)中我們很少使用byte或者short類型定義整數(shù)永品。基本不會使用char類型定義字符击纬,而使用字符串類型鼎姐,更不會使用char類型做算術(shù)運算。

       int a = 2;        int b = 5;        System.out.println("a+b="+(a+b));        System.out.println("b-a="+(b-a));        System.out.println("a*b="+(a*b));        System.out.println("b/a="+(b/a));        System.out.println("b%a="+(b%a));?        //當(dāng)出現(xiàn)不同類型的數(shù)據(jù)時,因為float>int,所有結(jié)果會自動轉(zhuǎn)為float型        float c = 2.2f;        System.out.println("c+b="+(c+b));        System.out.println("b-c="+(b-c));        System.out.println("c*b="+(c*b));        System.out.println("b/c="+(b/c));        輸出:        a+b=7        b-a=3        a*b=10        b/a=2        b%a=1        c+b=7.2        b-c=2.8        c*b=11.0        b/c=2.2727273

二炕桨、賦值運算符

賦值運算符主要有:=饭尝、+=、-=献宫、*=钥平、/=、%=姊途、++涉瘾、--,賦值運算符是將一個表達(dá)式的值賦值給左邊捷兰,左邊不能是一個常量立叛,必須是可變的。

    int a = 2;//最常見的賦值    int b = 5;?    int c = 0;    c += b;//c=c+b    System.out.println("c += b--->c="+c);//c=0+5    c -= a;//c=c-a    System.out.println("c -= a--->c="+c);//c=5-2    c *= a;//c=c*a    System.out.println("c *= a--->c="+c);//c=3*2    c /= a;//c=c/a    System.out.println("c /= a--->c="+c);//c=6/2    c %= a;//c=c%a    System.out.println("c /= a--->c="+c);//c=3%2

關(guān)于自增(++)與自減(--)詳解

(1)(i++贡茅、i--)先賦值秘蛇、再運算

(2)(++i、--i)先運算顶考、再賦值

int i = 2;int a = i++;//先賦值再運算赁还,即:先將i(此時i=2)賦值給a,再進(jìn)行++運算i村怪,i=i+1=3System.out.println(a);//輸出2System.out.println(i);//輸出3?int t = 2;System.out.println(t++);//先輸出t(此時t=2)秽浇,輸出2System.out.println(t);//上一步已做了t++操作浮庐,所以輸出3
int i = 2;int a = ++i;//先運算再賦值甚负,即:先進(jìn)行++運算i,i=i+1=3审残,再將i(此時i=3)賦值給a梭域,System.out.println(a);//輸出3System.out.println(i);//輸出3?int t = 2;System.out.println(++t);//先進(jìn)行++運算(此時t=t+1),輸出3System.out.println(t);//上一步已做了t++操作搅轿,所以輸出3

三病涨、關(guān)系運算符

關(guān)系運算符主要有:==、!=璧坟、>既穆、<、>=雀鹃、<=幻工,關(guān)系運算符一般稱為“比較運算符”,通常用來比較兩個常量或變量的大小黎茎,當(dāng)運算符關(guān)系成立時囊颅,結(jié)果為true,否則為false。

關(guān)系運算符的優(yōu)先級為:>踢代、<盲憎、>=、<= 具有相同的優(yōu)先級胳挎,并且高于具有相同優(yōu)先級的 !=饼疙、==。關(guān)系運算符的優(yōu)先級高于賦值運算符而低于算術(shù)運算符慕爬,結(jié)合方向是自左向右宏多。

四、邏輯運算符

邏輯運算符主要有:&澡罚、|伸但、^、!留搔、&&更胖、||。

(1)&和&&都表示與隔显,有且僅當(dāng)a却妨、b都為true時,結(jié)果為true括眠,&&有短路的效果彪标,當(dāng)?shù)谝粋€當(dāng)前條件為false時,后面的條件就不執(zhí)行掷豺,結(jié)果為false捞烟,&要對所有的條件進(jìn)行判斷

(2)|和||都表示或,有且僅當(dāng)a当船、b都為false時题画,結(jié)果為false,||有短路的效果德频,當(dāng)?shù)谝粋€當(dāng)前條件為true時苍息,后面的條件就不執(zhí)行,結(jié)果為true壹置,|要對所有的條件進(jìn)行判斷竞思。

(3)異或(^)運算規(guī)則:當(dāng)兩邊同為true或者同為false時,結(jié)果都為false钞护;當(dāng)兩邊為false和true時盖喷,結(jié)果為true。

int a = 10;int b = 20;float c = 2.1f;System.out.println((a<b) & (c>0));//先判斷a<b為true患亿,再判斷c>0為true传蹈,結(jié)果為trueSystem.out.println((a>b) & (c>0));//先判斷a>b為false押逼,再判斷c>0為true,結(jié)果為falseSystem.out.println((a>b) && (c>0));//因為a>b為false惦界,所以后面c>0就不判斷挑格,結(jié)果為falseSystem.out.println((a<b) && (c>0));//因為a<b為true,所以繼續(xù)判斷c>0為true沾歪,結(jié)果為trueSystem.out.println((a<b) && (c<0));//因為a<b為true漂彤,所以繼續(xù)判斷c<0為false,結(jié)果為falseSystem.out.println((a>b) | (c>0));//先判斷a>b為false灾搏,再判斷c>0為true挫望,結(jié)果為trueSystem.out.println((a>b) | (c<0));//先判斷a>b為false,再判斷c<0為false狂窑,結(jié)果為falseSystem.out.println((a>b) || (c>0));//因為a>b為false媳板,所以繼續(xù)判斷c>0為true,結(jié)果為trueSystem.out.println((a>b) || (c<0));//因為a>b為false泉哈,所以繼續(xù)判斷c<0為false蛉幸,結(jié)果為falseSystem.out.println((a<b) || (c>0));//因為a<b為true,所以后面c>0就不判斷丛晦,結(jié)果為trueSystem.out.println(true ^ true);//結(jié)果為falseSystem.out.println(false ^ false);//結(jié)果為falseSystem.out.println(false ^ true);//結(jié)果為true
Java基礎(chǔ)之運算符最詳解答

五奕纫、位運算符

位運算符主要有:~、&烫沙、&匹层、^、>>锌蓄、<<升筏、>>>,位運算符主要針對二進(jìn)制運算煤率。運算時需要先將十進(jìn)制轉(zhuǎn)為二進(jìn)制(注意一個字節(jié)有8位仰冠,前面需補0)

(1)與運算(&)

只有兩個位同為1時,結(jié)果才為1蝶糯,都在為0

int a = 16;//二進(jìn)制為0001 0000int b = 20;//二進(jìn)制為0001 0100System.out.println(Integer.toBinaryString(a));//輸出其二進(jìn)制0001 0000System.out.println(Integer.toBinaryString(b));//輸出其二進(jìn)制0001 0100System.out.println("a 和b 與的結(jié)果是:"+(a&b));//輸出16

詳解:

16: 0001 0000

<u style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0px; padding: 0px; border: 0px;">20: 0001 0100</u>

值16: 10000

(2)或運算符(|)

兩個位只要有一個為1,結(jié)果就是1辆沦,否則為0

int a = 19;//二進(jìn)制為0001 0011int b = 22;//二進(jìn)制為0001 0110System.out.println(Integer.toBinaryString(a));System.out.println(Integer.toBinaryString(b));System.out.println("a 和b 或的結(jié)果是:"+(a|b));//輸出23

詳解:

19: 0001 0011

22: <u style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0px; padding: 0px; border: 0px;">0001 0110</u>

值23: 0001 0111

(3)非運算符(~)

如果位為0昼捍,結(jié)果是1,如果位為1肢扯,結(jié)果是0妒茬。

int a = 4;//二進(jìn)制為0000 0100System.out.println("a 非的結(jié)果是:"+(~a));//輸出-5

詳解:

4: <u style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0px; padding: 0px; border: 0px;">0000 0100</u>

值-5: 1111 1011

注意:二進(jìn)制中,最高位是符號位 1表示負(fù)數(shù)蔚晨,0表示正數(shù)

(4)異或運算符(^)

如果兩個位相同乍钻,結(jié)果就為0肛循,不同結(jié)果就為1

int a = 7;//二進(jìn)制為111int b = 20;//二進(jìn)制為10100System.out.println("a 和b 異或的結(jié)果是:"+(a^b));//輸出19

詳解:

7: 0000 0111

20: <u style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0px; padding: 0px; border: 0px;">0001 0100</u>

值19: 0001 0011

(5)左移運算符(<<)

就是將所有的位向左移動多少位

int a = 7;//二進(jìn)制為111System.out.println("a 左移2位的結(jié)果是:"+(a<<2));//輸出28

詳解:

操作前00000111

左移后00011100

尾部補0,首位去0

a<<b 快速計算: a << b = a * 2b

(6)右移運算符(>>)

規(guī)則同左移運算符

六银择、條件運算符

關(guān)系表達(dá)式?表達(dá)式1:表達(dá)式2(相當(dāng)于ifelse)

int a = 7;int b = 20;System.out.println(a>b?"a大于b":"a小于b");//a小于b

文末總結(jié):

在我們平時實際開發(fā)中多糠,我們要著重掌握算術(shù)運算符、賦值運算符中的自增自減和(+=浩考、-=夹孔、=)、關(guān)系運算符析孽、邏輯運算符的(&&搭伤、||、!)袜瞬,這些使用率非常高怜俐,位運算符的話一般情況下用的比較少,除了某些特定的技術(shù)邓尤。條件運算符相當(dāng)于ifelse簡寫佑菩,能有效的簡化代碼,需要重點掌握裁赠。

另外我還準(zhǔn)備了Java運算符的視頻教程供各位小伙伴們學(xué)習(xí):

Java基礎(chǔ)之運算符最詳解答

想要學(xué)習(xí)了解關(guān)于Java運算符等的更多知識殿漠,可以點贊轉(zhuǎn)發(fā)加關(guān)注,然后私信回復(fù)【Java集合1001】即可免費得到獲取方式啦佩捞,免費绞幌,免費,免費一忱,重要的事情說三遍莲蜘。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市帘营,隨后出現(xiàn)的幾起案子票渠,更是在濱河造成了極大的恐慌,老刑警劉巖芬迄,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件问顷,死亡現(xiàn)場離奇詭異,居然都是意外死亡禀梳,警方通過查閱死者的電腦和手機杜窄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來算途,“玉大人塞耕,你說我怎么就攤上這事∽烊浚” “怎么了扫外?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵莉钙,是天一觀的道長。 經(jīng)常有香客問我筛谚,道長磁玉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任刻获,我火速辦了婚禮蜀涨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝎毡。我一直安慰自己厚柳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布沐兵。 她就那樣靜靜地躺著别垮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扎谎。 梳的紋絲不亂的頭發(fā)上碳想,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音毁靶,去河邊找鬼胧奔。 笑死,一個胖子當(dāng)著我的面吹牛预吆,可吹牛的內(nèi)容都是我干的龙填。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拐叉,長吁一口氣:“原來是場噩夢啊……” “哼岩遗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凤瘦,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宿礁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蔬芥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梆靖,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年坝茎,在試婚紗的時候發(fā)現(xiàn)自己被綠了涤姊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嗤放,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壁酬,到底是詐尸還是另有隱情次酌,我是刑警寧澤恨课,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站岳服,受9級特大地震影響剂公,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吊宋,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一纲辽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧璃搜,春花似錦拖吼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唾糯,卻和暖如春怠硼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背移怯。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工香璃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舟误。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓葡秒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脐帝。 傳聞我的和親對象是個殘疾皇子同云,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354