Java運算符:
目錄:
1.算術(shù)運算符
2.位運算符
3.賦值運算符
4.比較運算符
5.邏輯運算符
6.三目運算符
7.運算符的優(yōu)先級
1.算術(shù)運算符:
+? -? *? /? %
++??? --??? 只能操作【一個】【變量】
++? --? 即可放在變量之前厘熟。也可放在變量之后。
可放在變量之前维哈,先把變量 +1(-1)绳姨,然后再拿來用±樱可放在變量之后飘庄,先把變量拿來用,再把變量 +1(-1).
算數(shù)運算符Test程序 及 運行結(jié)果:
public class 算術(shù)運算符Test
{??
??? public static void main(String[] args)
??? {
??????? int a = 4 + 2 / 4 + 3 * 2 - 6 % 4;?
??????? System.out.println(a);
??????? int b = 3;
??????? int c = a++ / ++b - a-- % b++ - --a / a-- * ++a / b--;
?? ? ?? // 8? / 4? -? 9 % 4? -? 7 / 7 ? * 7? / 5
?? ? ?? System.out.println("a 的值是:" + a);
?? ? ?? System.out.println("b 的值是:" + b);
?? ? ?? System.out.println("c 的值是:" + c);
??? }
}
2.位運算符:
&????? :按位與
|?????? :按位或
~???? :按位非
^???? :按位異或
<<? :左移? ? ? ? 在右邊補(bǔ) 0 购撼,在沒有數(shù)據(jù)溢出的前提下跪削,左移 N 位,也是乘以 2 的N次方
>>? :右移? ? ? ? 在左邊補(bǔ)符號位迂求。? 右移 N 位碾盐,也是除以 2 的N次方。當(dāng)除不盡的情況揩局,實際得到的整數(shù)總是比實際算術(shù)計算的值略小
>>>:無符號右移??????? 在左邊補(bǔ)0
位運算符Test程序 及 運行結(jié)果:
public class 位運算符Test
??? {
??? public static void main(String[] args)
??? {
? ?? ?? byte bt = -2;
??????? byte be = 3;
??????? System.out.println(bt & be);// 只有上下兩位都是1,才得到1
?? ? ?? System.out.println(bt | be);// 只要上下兩位有一個1,就會得到1
?? ? ?? System.out.println(bt ^ be);// 只要上下兩位不一樣,就會得到1
?? ? ?? System.out.println(~bt);// 按位取反,包括符號位
?? ? ?? int a = 3;
?? ? ?? a = a << 3;? // 左移 N 位毫玖,在沒有數(shù)據(jù)溢出的前提下,
? ? ? ? ? ? ? ? ?? ? ? ?? // 相當(dāng)于在右邊補(bǔ)充 N 個0凌盯,也是乘以 2 的N次方
? ? ? ? System.out.println(a);
// 類似筆試題:怎么把一個數(shù)付枫,用最快的速度乘以8?左移3位即可十气。
?? ? ?? int b = 19;
? ? ? ? b = b >> 3;// 右移 N 位励背,
?? ? ?????????????????? // 相當(dāng)于截斷右邊的N位,也就是除以2的N次方
?? ? ????????????????? // 當(dāng)除不盡的情況砸西,實際得到的整數(shù)總是比實際算術(shù)計算的值略小
? ? ? ? System.out.println(b);
?? ? ?? int c = -3;
? ? ? ? c = c >>> 2;? ? //它會把負(fù)數(shù)變成正數(shù)
??????? System.out.println(c);
??? }
}
3.賦值運算符:
=??? 叶眉,把右邊的值,賦給左邊的變量
賦值運算符左邊只能是變量
賦值語句本身是有值的芹枷,值 就等于右邊被賦的值衅疙。
擴(kuò)展后的賦值運算符:
??????? 賦值運算符可以與所有的雙目運算符結(jié)合,就形成了擴(kuò)展后的賦值運算符鸳慈。
a+=b???????????? 相當(dāng)于????? a = (a 的類型)(a + b)
a-=b? ? ? ? ? ??? 相當(dāng)于? ? ? a = (a 的類型)(a - b)
a*=b? ? ? ? ? ? ? 相當(dāng)于? ? ? a = (a 的類型)(a * b)
a/=b? ? ? ? ??? ? 相當(dāng)于? ? ? a = (a 的類型)(a /b)
a%=b?????? ? ?? 相當(dāng)于? ? ? a = (a 的類型)(a % b)
a|=b????????????? 相當(dāng)于? ? ? a = (a 的類型)(a | b)
a^=b???????????? 相當(dāng)于? ? ? a = (a 的類型)(a ^ b)
a<<=b????????? 相當(dāng)于? ? ? a = (a 的類型)(a << b)
a>>=b ? ?????? 相當(dāng)于? ? ? a = (a 的類型)(a >> b)
a>>>=b ?? ??? 相當(dāng)于? ? ? a = (a 的類型)(a >>> b)
擴(kuò)展后的賦值運算符 程序 及 運行結(jié)果:
public class 擴(kuò)展后的賦值運算符
{
??? public static void main(String[] args)
??? {
? ?? ?? byte a = 20;// 20 本身是 int 型饱溢,但由于20在 -128~127 之間,系統(tǒng)會自動把它當(dāng)成 byte
??????? //a = a + 2;? // 2是 int 型走芋,表達(dá)式類型自動提升到 int 型绩郎,是錯的
??????? a += 2;? ? // 相當(dāng)于 a = (byte)(a + 2)? 因此是對的
?? ? ?? //20 += a;? ? // 相當(dāng)于 20 = (int)(20 + a)潘鲫。賦值左邊只能是變量,所以是錯的
?? ? ?? int b = 3;? // 相當(dāng)于 b = 0b11
? ? ? ? b ^= 11;? ? // 相當(dāng)于 b = b ^ 11.? 11的二進(jìn)制碼為 0b1011
? ? ? ? System.out.println("b的值為" + b);
??? }
}
4.比較運算符:只能返回 true 或 false
a > b:??? 只有 a 大于 b肋杖,返回 true溉仑,如果 a < b,或 a == b状植,返回 false浊竟。
a < b:??? ……
a >= b:……
a <= b:……
a == b:……
a != b:……
比較運算符的左右的東西,即可是變量津畸,也可是直接量振定,也可以是表達(dá)式。
比較運算符 程序 及 運行結(jié)果:
public class 比較運算符
{
??? public static void main(String[] args)
??? {
??????? boolean bo = 5 >= 3;
??????? System.out.println("bo的值是" + bo);
?? ? ?? boolean bn = 3 >= 5;
? ? ? ? System.out.println("bn的值是" + bn);
?? ? ?? int a = 100;
?? ? ?? int b = 20;
? ? ? ? boolean b1 = (a += 2) >= (b *= 6);
? ? ? ? System.out.println("b1的值是" + b1);
? ? ? ? System.out.println("a的值是" + a);
? ? ? ? System.out.println("b的值是" + b);
??? }
}
5.邏輯運算符:它的操作數(shù)要求只能是 boolean 值
它左右的操作數(shù)即可是變量肉拓,也可是直接量后频,也可以是表達(dá)式。
&&??? :? 兩個操作數(shù)都是 true 才返回 true帝簇。?? 只要有一個 false 徘郭,就會 false
&????? :? 不會短路
||? ? ? :? 只要一個操作數(shù)是 true ,就返回 true丧肴。? 只要有一個 true 残揉,就會 true
|?????? :? 不會短路
!?????? :? 取反。單目元素芋浮,原來是 true 抱环,變成 false;原來是 false纸巷,變成 true
^????? :? 異或镇草。只有當(dāng)兩個操作數(shù)不同時,才返回 true
邏輯運算符 程序 及 運行結(jié)果:
public class 邏輯運算符
{
??? public static void main(String[] args)
??? {
??????? boolean bn = true && true;
?? ? ?? System.out.println("bn的值是:" + bn);
?? ? ?? int a = 6;
? ? ? ? boolean bo = (a++ >= 7) && (5 <= 20);
?? ? ?? System.out.println("bo的值是:" + bo);
?? ? ?? boolean ba = (a++ >= 7) || (5 <= 3);
?? ? ?? System.out.println("ba的值是:" + ba);
?? ? ?? System.out.println("a的值是:" + a);
??????? int c = 10;
?? ? ?? boolean bea = (5 <= 1) & (c++ > 2);//與運算:只要一個數(shù)是false瘤旨,應(yīng)該直接就返回false
? ? ? ? System.out.println("bea的值是" + bea);//&& 只要前一個操作數(shù)是false梯啤,根本不會去計算后一個操作數(shù),直接返回false
??????? System.out.println("c的值是" + c);//但 & 無論前一個操作數(shù)是什么存哲,依然去計算后一個操作數(shù)
??????? int d = 5;
?? ? ?? boolean boo = (5 <= 20) | (d++ > 100);//或運算:只要一個數(shù)是true因宇,應(yīng)該直接就返回true
? ? ? ? System.out.println("boo的值是" + boo);//|| 只要前一個操作數(shù)是true,根本不會去計算后一個操作數(shù),直接返回true
??????? System.out.println("d的值是" + d);//但 | 無論前一個操作數(shù)是什么祟偷,依然去計算后一個操作數(shù)
?? ? ?? System.out.println(true ^ false);
?? ? ?? System.out.println(true ^ true);
?? ? ?? System.out.println(false ^ false);
?? ? ?? System.out.println(false ^ true);
??? }
}
6.三目運算符
邏輯表達(dá)式察滑? 表達(dá)式1 : 表達(dá)式2
如果邏輯表達(dá)式返回true,整個表達(dá)式為表達(dá)式1的值
同理為2
三目運算符 程序 及 運行結(jié)果:
public class 三目運算符
{
??? public static void main(String[] args)
??? {
??????? int a = 100;
??????? a = (a *= 2) >= 200 ? a++ : a--;//這里有自加的陷阱修肠,要注意:爻健!!
?? ? ?? System.out.println("" + a);
??? }
}
7.不同運算符有它們各自的優(yōu)先級
盡量使用括號來控制優(yōu)先級饲化!
()的優(yōu)先級非常高
幫記口訣:單目乘除為關(guān)系莽鸭,邏輯三目后賦值。
單目:單目運算符+ –(負(fù)數(shù)) ++ -- 等
乘除:算數(shù)單目運算符* / % + -
為:位移單目運算符<< >>
關(guān)系:關(guān)系單目運算符> < >= <= == !=
邏輯:邏輯單目運算符&& || & | ^
三目:三目單目運算符A > B ? X : Y
后:無意義吃靠,僅僅為了湊字?jǐn)?shù)
賦值:賦值=
以上
寫在最后:
可以收藏方便以后查看哦蒋川!
如果你也是剛?cè)腴T,強(qiáng)烈建議照著本文把代碼自己敲一遍看看結(jié)果撩笆!
總結(jié)回顧一下之前所學(xué)習(xí)的內(nèi)容:
以下純屬瞎比比,各位可以忽略
昨晚上九點多去了公司的健身房缸浦,四個角落放了四個風(fēng)扇什么鬼啊夕冲,不過也還好,畢竟免費A阎稹4跤恪!練完了回去時結(jié)果西二旗地鐵站竟然沒有一個單車卜高,就看到一個還是壞的弥姻,走回去就11點多了……
從去年9月份開始在學(xué)校附近辦了健身卡,在我的帶動下還有三個小伙伴和我一起辦了掺涛,結(jié)果兩個早已不見人影庭敦,一個去走專業(yè)的道路了,而我算是兩者之間吧薪缆,一直陸陸續(xù)續(xù)(最多將近三周沒去秧廉,比如從面試一直到來到北京租房期間)堅持到了現(xiàn)在,怎么說那拣帽,雖然體重沒有太大變化(本意是減肥疼电,結(jié)果一入健身深似海),但是身體感覺發(fā)生了很大的變化(好吧减拭,只有我自己能感覺到)蔽豺,不過絲毫不影響我對健身的喜愛。加油吧騷年拧粪,非常喜歡一句話:文明其精神修陡,野蠻其體魄!