Java筆記丨08 運算子與表示式
阿新 • • 發佈:2018-12-21
運算子
- 算數運算子:+ - * / % ++ --
- 關係運算符:> < >= <= == !=
- 邏輯運算子:! & | ^ && ||
- 位運算子:& | ^ ~ >> << >>>
- 賦值運算子:= 擴充套件賦值運算子:+= -= *= /=
- 字串連線運算子:+
^ 表示位運算中的按位異或
~ 取反
a<<b將二進位制形式的a逐位左移b位,最低位空出的b位補0
a>>b將二進位制形式的a逐位右移b位,最高位補原來的符號位
a>>>b無符號右移,將二進位制形式的a逐位右移b位,最高位補0
短路邏輯運算子
&& 第一個運算元為假則不判斷第二個運算元
|| 第一個運算元為真則不判斷第二個運算元
移位運算子性質
適用資料型別:byte、short、char、int、long
對低於int型的運算元將先自動轉換成為int型再移位(整型提升,對所有的運算都這樣)
對於int型整數移位a>>b,系統先將b對32取模,得到的結果才是真正移位的位數
對於long型整數移位a>>b,先是將b對64取模
字串連線運算子+
“+”除了用於加法運算外,還可以用於對字串進行連線操作
int i=300+5;
String s=“hello,”+“world!”;
“+”運算子只要兩側的運算元中有一個是字串型別(String)型別,系統會自動將另一個運算元轉換為字串然後再進行連線
int i=300+5;
String s=“hello,”+i+“號”;
System.out.println(s);//輸出:hello,305號
表示式
- 表示式的是符合一定語法規則的運算子和運算元的序列
- 表示式的型別和值
對錶達式中運算元進行運算得到的結果稱為表示式的值
表示式的值的資料型別即為表示式的型別
- 表示式的運算順序
首先應該按照運算子的優先順序從高到低的順序進行
優先順序相同的運算子按照事先約定的結合方向進行
- 表示式中的型別轉換
當有不同種類的混合運算時:
int->long->float->double
- 整型提升
所有的byte,short,char參與算術運算等轉為int
- 問題
a=2;
b=a++ + ++a;//結果為6
a++的副作用
- 檢視反彙編的程式碼
使用javap -c類名