Java學習之運算子、表示式
一、算術運算子和算術表示式
(1)加減運算子
加、減運算的運算子號分別為+和-,是雙目運算子,即連線兩個操作元的運算子。加、減運算的結合性是從左到右。例如,2+3-8,先計算2+3,再將得到的結果減8。加減運算的操作元時整型或浮點型資料,加減運算子的優先順序是4。
(2)乘、除和求餘運算子
乘、除和求餘運算的運算子號分別為*、/、%,是雙目運算子。*、/、%運算子的結合性是從左到右。例如,2*3/8,先計算2*3,再將得到的結果除以8。操作元時整型或浮點型資料,優先順序是3。
(3)自增、自減運算子
自增、自減運算子分別為++、--,是單目運算子,優先順序是2級。自增、自減運算子可以放在操作元之前,也可以放在操作元之後,但操作元必須是一個整型或浮點型變數(不能是常量或表示式)。自增、自減運算子的作用是使變數的值加1或減1。如:
++x,--x表示在使用x之前,先將x的值加1或減1。
x++,x--表示在使用x之後,將x的值加1或減1。
(4)算術表示式
用算術符號和操作元連線起來的、符合Java語法規則的式子,稱為算術表示式,如:
x+2*y-30+3*(y+5)-12+n+(--n)
(5)算術混合運算的精度
精度由低到高排列的順序是:byte、short、int、long、float、double。Java將按運算子兩邊的操作元的最高精度保留結果的精度,如5/2的結果是2,要想得到2.5,必須寫成5.0/2或5.0f/2。
char型別資料和整型資料運算結果的精度是int。
二、關係運算符和關係表示式
關係運算符用來比較兩個值的關係,運算結果是boolean型別資料。當運算子對應的關係成立時,運算結果是true,否則是false。
(1)大小關係運算符
大小關係運算符的符號分別為>、>=、<、<=,是雙目運算子,操作元是數值型的常量、變數或表示式。
(2)等與不等
等與不等關係運算符的符號分別是==和!=,雙目運算子,優先順序7級。==和!=都是由2個字元組成的一個完整的符號,書寫時不要有空格。
(3)關係表示式
結果為數值型的變數或表示式可通過關係運算符形成關係表示式。
三、邏輯運算子和邏輯表示式
邏輯運算用來實現boolean型別資料的邏輯“與”、“或”、“非”運算,結果是boolean型別。
(1)邏輯“與”和邏輯“或”
邏輯“與”和邏輯“或”運算的符號是&&和||,操作元是boolean型別的變數或求值結果是boolean型別的表示式。
&&的運演算法則是:當兩個操作元的值都是true時,運算結果是true,否則為false。
||的運演算法則是:當兩個操作元的值都是false時,運算結果是false,否則為true。
&&和||也稱為短路邏輯運算子。進行op1&&op2運算時,如果op1的值是false,運算時不再去計算op2的值,直接得出結果為false。當op1的值是true時,運算子||在運算時不再去計算op2的值,直接得出結果為true。
(2)邏輯“非”
邏輯“非”的符號為!,操作元在左。當操作元的值是true時,運算結果是false,反之為true。
(3)邏輯表示式
結果為boolean型別的變數或表示式可以通過邏輯運算子形成邏輯表示式。
四、賦值運算子和賦值表示式
賦值運算子“=”,左邊的操作元必須是變數,不能使常量或表示式。賦值表示式的值就是“=”左邊變數的值。
五、移位運算子
移位運算子用來對二進位制進行操作,分為左移位和右移位。
(1)左移位
左移位符號是<<,左移位運算子左邊的操作元稱為被移位數,右邊的運算元稱為移位量,操作元必須是整型型別的資料。
假設a是一個被移位的整型資料,n是位移量。a<<n運算的結果是通過將a的所有位都左移n位,每移一位,左邊的高階位上的0或1被移出,並用0填充右邊的低位。
對於byte或short型別的資料,a<<n的運算結果是int型別。
(2)右移位
右移位運算子是>>。a>>n運算的結果是通過將a的所有位都右移n位,每移一位,右邊的低位被移出,並用0或1填充左邊的高位。
對於byte或short型別的資料,a>>n的運算結果是int型別。
六、位運算子
(1)“按位與”運算子
&是雙目運算子,對兩個整型資料a、b按位進行運算,運算結果是一個整型資料c。運演算法則是:如果a、b兩個資料對應位都是1,則c的該位是1,否則是0。如果b的精度高於a,那麼結果c的精度和b相同。
(2)“按位或”
|是雙目運算子,對兩個整型資料a、b按位進行計算,運算結果是一個整型資料c。運演算法則是:如果a、b兩個資料對應位都是0,則c的該位是0,否則是1。如果b的精度高於a,那麼結果c的精度和b相同。
(3)“按位非”
~是單目運算子,對一個整型資料a按位進行運算,運算結果是一個整型資料c。運演算法則是:如果a對應位是0,則c的該位是1,否則是0。
(4)“按位異或”
^是雙目運算子,對兩個整型資料a、b按位進行運算,運算結果是一個整型資料c。運演算法則是:如果a、b兩個資料對應位相同,則c的該位是0,否則是1。如果b的精度高於a,那麼結果c的精度和b相同。
由異或運演算法則可知:
a^a=0,0^a=a
位運算子也可以操作邏輯型資料,法則是:
當a、b都是true時,a&b是true,否則a&b是false;當a、b都是false時,a|b是false,否則是true;當a是true時,~a是false,當a時false時,~a是true。
七、條件運算子
條件運算子是一個三目運算子,符號是“?:”,需要連線3個操作元,用法如下:
op1?op2:op3
要求第一個操作元op1的值必須是boolean型別資料。運演算法則是:當op1的值是true時,op1?op2:op3運算的結果是op2的值;當op1的值是false時,op1?op2:op3運算的結果是op3的值。
八、instanceof運算子
instanceof,左邊的操作元是一個物件,右邊是一個類。當左邊的物件是右邊的類建立的物件時,該運算的結果是true,否則是false。