算術(shù)運(yùn)算符 Arithmetic operators
加號(hào)(+):在操作數(shù)值肴沫、字符、字符串時(shí)其結(jié)果各有不同蕴忆;
字符相加得到的是ASCII碼表值颤芬;
字符串相加時(shí)表示將字符串拼接在一起,得到的是組合后的新字符串套鹅;
兩個(gè)數(shù)值相加表示數(shù)學(xué)中的加法運(yùn)算站蝠;
除號(hào)(/):整數(shù)在使用除號(hào)操作時(shí),得到的結(jié)果仍為整數(shù)卓鹿,小數(shù)部分會(huì)被直接忽略菱魔,而不是四舍五入,但是當(dāng)整數(shù)除以0的時(shí)候吟孙,會(huì)引發(fā)算術(shù)異常(ArithmeticException)澜倦。
Exception in thread "main" java.lang.ArithmeticException: / by zero
正無(wú)窮大(Infinity):當(dāng)一個(gè)正浮點(diǎn)類型數(shù)除以0時(shí),或者正整數(shù)除以0.0時(shí)拔疚;
負(fù)無(wú)窮大(-Infinity):當(dāng)一個(gè)負(fù)浮點(diǎn)類型數(shù)除以0時(shí)肥隆,或者負(fù)整數(shù)除以0.0時(shí);
NaN(Not a Number):當(dāng)0.0除以0.0時(shí)出現(xiàn)稚失;
需要注意的是:正負(fù)無(wú)窮大和NaN都屬于double浮點(diǎn)類型栋艳,并且所有的正無(wú)窮大都是相等的,所有的負(fù)無(wú)窮大也是相等的句各,但是NaN永遠(yuǎn)不相等吸占,也不等于自己。
取模(求余數(shù):%):模數(shù)的符號(hào)忽略不計(jì)凿宾,結(jié)果的正負(fù)取決于被取模的數(shù)初厚。
++ 和 -- :表示所操作的變量自增1和自減1产禾,都只能操作變量,不能操作常量妄痪;
自增:++衫生,自增操作符,變量值自增1彭羹,有前置和后置之分皆怕,只能操作變量愈腾。
自減: -- 虱黄,自減操作符吮成,變量值自減1粱甫,有前置和后置之分茶宵,只能操作變量。
自增和自減具體操作是一樣的种蝶,增量和減量都是1螃征;比如:代碼 result ++和 ++result盯滚,都是將result變量的值在原始值的基礎(chǔ)上增加1淌山,然后賦值給result;代碼 result --和 --result德绿,都是將result變量的值在原始值的基礎(chǔ)上減去1,然后賦值給result蕴纳。唯一的區(qū)別是:
前置(++result): 表示對(duì)result增加1之后的結(jié)果進(jìn)行運(yùn)算古毛;
后置(result++): 表示對(duì)result變量值增加1之前的值(原始值)進(jìn)行運(yùn)算稻薇,然后再對(duì)result增加1塞椎;
無(wú)論是前置還是后置,最后都會(huì)對(duì)result增加1服傍;如果僅僅執(zhí)行簡(jiǎn)單的遞增操作(只寫result++或++result)比如單行操作吹零,那么選用任意一個(gè)都可以灿椅,比如下邊這樣的:
代碼塊
result++阱扬;
代碼塊
賦值運(yùn)算符 Assigning operator
注意Java支持同時(shí)給多個(gè)變量賦值麻惶,好比支持同時(shí)聲明多個(gè)變量一樣窃蹋,但因影響代碼可讀性静稻,故也不推薦。
加等于:如:x += 5; 相當(dāng)于 x = x + 5杀迹,但還包括隱式類型轉(zhuǎn)換树酪。
public static void main(String[] args){
int a, b, c;? // 不推薦
a = b = c = 5; // 不推薦
short s = 5;
// s = s + 3; // 編譯出錯(cuò),需要強(qiáng)轉(zhuǎn) s = (short)(s + 3);
s += 3; // 編譯OK垂谢,隱式類型轉(zhuǎn)換
}
比較運(yùn)算符 Comparison operator
用于比較兩個(gè)變量或常量之間的關(guān)系滥朱,其結(jié)果是boolean類型,其操作格式為:
boolean result = 表達(dá)式A 比較運(yùn)算符 表達(dá)式B徙邻;
==:等于懂版,若比較的兩個(gè)變量都是數(shù)值類型,即使類型不同民鼓,只要值相同就OK丰嘉,就會(huì)返回true嚷缭。
==也可以比較引用數(shù)據(jù)類型阅爽,表示的是操作符兩邊的對(duì)象是否是同一對(duì)象付翁,比較的是JVM中的內(nèi)存地址百侧;
instanceof:用于判斷右邊的對(duì)象是否是左邊類型的實(shí)例;
三元運(yùn)算符 Ternary operator
三元運(yùn)算符辫狼,表示有三個(gè)元素參與的表達(dá)式膨处,所以又稱為三目運(yùn)算符真椿,其語(yǔ)義表示if-else瀑粥,語(yǔ)法格式如下:
X? ? ?? ? Y? :? Z狞换;
其中X為boolean類型表達(dá)式修噪,先計(jì)算X的值黄琼,若X結(jié)果為true整慎,則返回Y,整個(gè)三目運(yùn)算表達(dá)式的結(jié)果是Y撤师,否則就是Z剃盾。三目運(yùn)算符結(jié)果的類型由Y和Z決定痒谴。
可以通過(guò)以下的實(shí)例驗(yàn)證:
1.兩個(gè)數(shù)求最大值/最小值铡羡;
int a = 13;
int b = 14;
int maxValue = (a > b) ? a : b ;
2.判斷一個(gè)數(shù)的是奇數(shù)還是偶數(shù)蓖墅;
int i = 13;
String result = (i % 2) ==? 0 ? "偶數(shù)" :? "奇數(shù)"? ;
邏輯運(yùn)算符 Logical operator
用于操作兩個(gè)boolean類型的變量或常量,結(jié)果類型也是boolean教翩。語(yǔ)法格式為:
boolean result = 表達(dá)式A 邏輯運(yùn)算符 表達(dá)式B;
&:表示并且,當(dāng)操作數(shù)A和B都為true時(shí)result才為true,否則就是false钻注。
&&:和&結(jié)果相同幅恋,具有短路效果捆交,如果左邊操作數(shù)A是false腐巢,result 一定為false肉瓦,且不運(yùn)行B的運(yùn)算胃惜。
|:表示或者蛹疯,A和B都為false時(shí)結(jié)果為false捺弦,只要有A或B是true列吼,結(jié)果就是true。
||:和|結(jié)果相同慌申,具有短路效果蹄溉,如果左邊操作數(shù)A是true柒爵,result一定為true棉胀,操作數(shù)B就不會(huì)執(zhí)行,因?yàn)橐呀?jīng)沒(méi)有這個(gè)必要了霎挟。
^:判斷A和B是否不同,不同則為true酥夭,相同則為false采郎。
!:取反,!true結(jié)果是false最楷,!fasle結(jié)果是true籽孙。
位運(yùn)算符 Bit operator
位操作是程序設(shè)計(jì)中按位對(duì)二進(jìn)制數(shù)數(shù)據(jù)的一元和二元操作犯建。詳情如下:
<<:將操作數(shù)的二進(jìn)制碼整體左移指定位數(shù),左移之后的空使用“0”來(lái)補(bǔ)充谱仪。
>>:將操作數(shù)的二進(jìn)制碼整體右移指定位數(shù)玻熙,右移之后的空使用“符號(hào)位”來(lái)補(bǔ)充:
若是正數(shù)使用“0”補(bǔ)充;
若是負(fù)數(shù)使用“1”補(bǔ)充疯攒;(操作負(fù)數(shù):取反嗦随,求補(bǔ),操作敬尺,取反枚尼,求補(bǔ))
>>>:將操作數(shù)的二進(jìn)制碼整體右移指定位數(shù),右移之后的空位使用“0”來(lái)補(bǔ)充砂吞。
若要交換兩個(gè)變量的值署恍,如int a = 3,int b = 5呜舒,交換后a 等于5锭汛,b等于3,我們可以定義第三方的變量來(lái)完成∥蹬郏現(xiàn)在要求使用最快的方式完成渠脉,怎么做为朋?
運(yùn)算符優(yōu)先級(jí)
在程序設(shè)計(jì)中有眾多運(yùn)算符,運(yùn)算符之間的操作會(huì)有先后之分,也稱優(yōu)先級(jí),詳情如下:
表中的優(yōu)先級(jí)1 -- 14根蟹,優(yōu)先級(jí)依次從高到低,同一級(jí)按表中從右到左蕉堰,或者從左到右的順序執(zhí)行皿渗。
Java語(yǔ)言分隔符
分號(hào)(;):語(yǔ)句的分割挤土,表示一個(gè)代碼語(yǔ)句結(jié)束尉桩;
花括號(hào)({}):表示一個(gè)代碼塊,是一個(gè)整體,花括號(hào)要成對(duì)使用;在面向?qū)ο蟮睦砟钪兄贡希a塊通常表示一個(gè)或者多個(gè)業(yè)務(wù)邏輯谨朝;
方括號(hào)([]):通常是定義數(shù)組和訪問(wèn)數(shù)組元素時(shí)使用;
圓括號(hào)(()):使用很廣泛骄呼,如數(shù)據(jù)類型轉(zhuǎn)換嫉沽、數(shù)據(jù)運(yùn)算玻佩、方法的定義和使用等烦秩;
圓點(diǎn)(.):類和對(duì)象訪問(wèn)它的成員時(shí)使用,如:Arrays.sort()猴凹;
空格( ):把一整個(gè)代碼語(yǔ)句語(yǔ)句分割成幾段书劝,空格的使用次數(shù)不限垂蜗,和英語(yǔ)中單詞之間要使用空格是一樣的霜定。
運(yùn)算符使用需要注意
1.以上分隔符都必須都是半角下的英文符號(hào)剖张;
2.要注意區(qū)分空格和空白炫刷,空格對(duì)應(yīng)的是鍵盤上的空格鍵的輸入涨享,在Java中挡爵,空格是可以作為一個(gè)有效字符使用的涣雕,而空白相對(duì)于空格來(lái)說(shuō)要寬泛得多疗韵,也可以說(shuō)空白是由大量的空字符組成的蕉汪;
完結(jié)革砸。老夫雖不正經(jīng),但老夫一身的才華