概括
簡(jiǎn)介
⒈作用——操作數(shù)據(jù)(作用于操作數(shù))
????①生成新值
????②改變操作數(shù)自身的值(“副作用”)
????③幾乎所有的操作符都只能操作“基本類(lèi)型”的數(shù)據(jù)闻坚;
????????例外的“=”阁簸、"=="旷痕、"!="能操作所有的對(duì)象续语;
? ? ????String類(lèi)型支持“+”和“+=”
⒉優(yōu)先級(jí)
????①遵循“先乘除后加減”的規(guī)則苞慢,注意 使用括號(hào)
????②String類(lèi)型后面使用“+”限次,后面若是非String類(lèi)型的元素時(shí),會(huì)將其轉(zhuǎn)換成String
種類(lèi)
⒈賦值——“=”
????①含義:取右邊的值,復(fù)制給左邊
? ? ? ? 右邊:任何常數(shù)瓮孙、變量或表達(dá)式(只要能產(chǎn)生一個(gè)值即可)
? ? ? ? 左邊:必須是一個(gè)明確的,已命名的變量选脊,必須有一個(gè)物理空間可以存儲(chǔ)
? ? ②基本類(lèi)型
? ? ? ? ? int a = 3;
? ? ? ? ? int b = a;
? ? ? ? ? → 此時(shí) b = a = 3(直接將a的值復(fù)制給b)
? ? ? ? ? ? 之后若改變 a杭抠,對(duì) b 沒(méi)有影響
????③對(duì)象
? ? ? ? ? ?對(duì)一個(gè)對(duì)象操作時(shí),真正操作的是引用恳啥,所以賦值時(shí)偏灿,實(shí)際是將引用復(fù)制到另一個(gè)地方,注意這里容易出現(xiàn)“別名現(xiàn)象”
?class Test{
?????? int a;
??? } ??
? Test t1 = new Test();
? Test t2 = new Test();
? t1.a = 3;
? t2.a = 4;
? print(“t1.a=”+t1.a+", t2.a = "+t2.a) → 3 , 4 ???????????????????
?t1 = t2;
print(“t1.a=”+t1.a+", t2.a = "+t2.a) → 4 ,4
? t1.a = 5;
?print(“t1.a=”+t1.a+", t2.a = "+t2.a) → 5 , 5
????④直接常量
????????● 直接賦值一個(gè)常量數(shù)值
????????●數(shù)值后面跟的符號(hào)標(biāo)志了它的類(lèi)型钝的。
????????????例如:L —— long翁垂、f(F) —— float、d(D) —— double
????????????若賦值一個(gè)超過(guò)其自身范圍的數(shù)值硝桩,則會(huì)報(bào)錯(cuò)
????????????chart沿猜、byte、short類(lèi)型碗脊,會(huì)自動(dòng)轉(zhuǎn)換成int
? ? ? ?● 十六進(jìn)制:前綴0x(0X),后面跟隨0-9或小寫(xiě)a-f表示
? ? ? ?●八進(jìn)制:前綴0啼肩,后續(xù)0-7的數(shù)字表示
? ? ????●使用十六進(jìn)制和八進(jìn)制計(jì)數(shù)法時(shí),通常以二進(jìn)制形式顯示,Integer和Long的靜態(tài)方法toBinaryString()祈坠,可以實(shí)現(xiàn)該功能
????????● e表示10的冪次害碾,例如:?表示?
⒉算術(shù)操作符
? ? ① 加(+)、減(-)赦拘、乘(*)慌随、除(/)、取模(%—— 從整數(shù)除法中產(chǎn)生余數(shù)另绩,直接去掉小數(shù)儒陨,不是四舍五入)
????②一元減號(hào)(-):用于轉(zhuǎn)變數(shù)據(jù)的符號(hào)
? ? ③一元加號(hào)(+):將小類(lèi)型的操作數(shù)提升為int
⒊自動(dòng)遞增和遞減
? ? ①自動(dòng)遞增:++增加一個(gè)單位
? ? ? ? ?●前綴遞增:++a → 先執(zhí)行運(yùn)算,再賦值
? ? ? ? ?●后綴遞增:a++ → 先賦值笋籽,再執(zhí)行運(yùn)算
? ? ? ? (前綴遞減蹦漠,后綴遞減同理)
? ? ②自動(dòng)遞減:--減少一個(gè)單位
? ? ③例如:
????????????int i = 1;
? ??????????print(“i =”+i ) → 1;
????????????int a = i++;
? ??????????print(“a =”+ a ) → 1;?????
? ??????????print(“i =”+i ) → 2;
????????????int b = ++i ;
? ??????????print(“b =”+b ) → 3;
? ??????????print(“i =”+i ) → 3;
⒋關(guān)系操作符
????①包括:小于(<)、大于(>)车海、小于等于(≤)笛园、大于等于(≥)、等于(==)侍芝、不等于(!=)
? ? ②等于和不等于的應(yīng)用
? ??????????● 基本類(lèi)型:比較的是值
????????????● 對(duì)象:比較的是對(duì)象的引用
? ? ③equals():
????????????沒(méi)有重寫(xiě)改方法研铆,則比較的是引用;重寫(xiě)后州叠,比較的是對(duì)象的實(shí)際內(nèi)容(Java中在Integer棵红,String等勒種默認(rèn)重寫(xiě)了,其他自己創(chuàng)建的對(duì)象咧栗,需要自己按需決定是否重寫(xiě))逆甜、
????????????注意:該方法不適用于基本類(lèi)型
⒌邏輯操作符
? ? ① 包括:與(&)、或(|)致板、非(!)
? ? ② 短路:&& 交煞、||?
? ? ? ? 例如:test(0) && test(1) && test(2),若前兩個(gè)結(jié)果分別為true和false,那么顯然整體結(jié)果為false,所以test(2)就不會(huì)執(zhí)行了,因此斟或,稱(chēng)其為短路素征。能夠提升性能
⒍三元操作符
? ? ①形式:boolean-exp ?value0 : value1
? ? ? ?true —— value0
? ? ? ?false —— value1
? ? ②效率高,代碼簡(jiǎn)潔萝挤,但可讀性差
⒎字符串操作符—— “+”“+=”
? ? ①若表達(dá)式以字符串起頭御毅,后面所有的操作數(shù)據(jù)都是字符串類(lèi)型
? ? ②基本類(lèi)型變量 + “” 可以直接轉(zhuǎn)化為字符串類(lèi)型
? ? ? ? 例如:int a = 1;? a +"" →? 對(duì)應(yīng)的方法為Integer.toString(a);
⒏類(lèi)型轉(zhuǎn)換操作符
? ? ①自動(dòng)轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換
? ??????● 自動(dòng)轉(zhuǎn)換
? ? ? ? ? ? 例如:float f = 1; → 將一個(gè)int類(lèi)型的值,賦值給float類(lèi)型的變量怜珍,此時(shí)會(huì)自動(dòng)轉(zhuǎn)換為float類(lèi)型
????????●強(qiáng)制轉(zhuǎn)換
? ? ? ? ? ? 例如:long? lng = (long)200;? int i = (int)lng
? ? ? ? ? ? 既可以強(qiáng)制轉(zhuǎn)換數(shù)值亚享,也可以強(qiáng)制轉(zhuǎn)換變量
? ? ②窄化轉(zhuǎn)換與擴(kuò)展轉(zhuǎn)換
? ? ? ? ? ?● 窄化轉(zhuǎn)換:由容納信息多的類(lèi)型,轉(zhuǎn)換成容納信息少的類(lèi)型(例如:將long類(lèi)型轉(zhuǎn)化為int類(lèi)型)绘面,會(huì)造成數(shù)據(jù)的丟失
? ??????????????? 注意窄化轉(zhuǎn)換造成的截尾欺税,例如:float f = 39.59; int i = (int)f,得到的結(jié)果為39侈沪,會(huì)直接取整。
? ???????????????四舍五入:Math.round()
? ? ? ? ? ?●?擴(kuò)展轉(zhuǎn)換:由容納信息少的類(lèi)型晚凿,轉(zhuǎn)換成容納信息多的類(lèi)型
? ???????????????提升:類(lèi)型小的數(shù)值亭罪,自動(dòng)轉(zhuǎn)換為類(lèi)型大的數(shù)值,稱(chēng)為提升
?????????????????在表達(dá)式中歼秽,出現(xiàn)的最大的數(shù)據(jù)類(lèi)型应役,決定了表達(dá)式最終結(jié)果的數(shù)據(jù)類(lèi)型。例如:double類(lèi)型和int類(lèi)型相加燥筷,得到的結(jié)果為double類(lèi)型