1. 程式人生 > >Java學習之運算子、表示式

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。