Java的運算子

2021-08-25 14:42:52 字數 2027 閱讀 7026

【*: 注意容易溢位】

【/:整數除以整數結果一定是整數,取整】

【%:最終結果的符號位 取決於參與運算的第乙個數 即第乙個數是整數結果就是正,第乙個是負結果就是負。與第二個數無關】

【這些運算子能夠保證左側的資料型別不發生任何變化====》即這裡有乙個隱藏式的強制型別轉換變成運算子左側的資料型別】

【a.取值    b.運算     x++/x-- ab 先取值在運算   ++x /--xba 先運算在取值】

x=15 y=1

x++ + --y - ++x + y++ =32   運算之後x=17   y=1

【&&與|| 邏輯短路運算子  他們具有短路特性,只要能判斷出對或錯是後面的就不再進行判斷】

【&與| 邏輯非短路運算子  不管能不能判斷出來全部都會判斷一遍】

10  27  52  12  58

%2    0   1   0   0   0

&1    0   1   0   0   0

%4    2   3   0   0   2

&3    2   3   0   0   2

*: %2 %4 %8 %16 ...

&1 &3 &7 &15 ...

由上面幾組資料可知n%2=n&1,n%4=n&3,n%8=n&7,n%16=n&15依次類推可以得到n%2(x)=n&2(x)-1;

0000110101

|    1101010011

1101110111

只有不同為1,相同為0。

0000110101

^    1101010011

1101100110

ibm 筆試題 [禁止使用第三塊空間]     交換兩個變數的值,不使用第三個變數的四種法方

int a = 3;

int b = 5;

方一:        

a = a ^ b;//a = 6        110

b = a ^ b;//b = 3        011

a = a ^ b;//a = 5        101

理解:三個按位異或:

第一步是兩個變數按位異或複製給第乙個變數。

第二部這個被賦值的變數與第二個變數按位異或便得到第乙個變數的初始值複製給第二個變數,這樣第乙個變數例存的還是兩個變數的異或結果,第二個變數裡就是第乙個變數了。

然後第三步,將第乙個變數與第二個變數再次異或,得到的便是第二個變數,賦值給第乙個變數。

總的來說,兩個變數異或得到的就是兩個變數的不同點,這個不同的數值與兩個變數任意乙個得到的都是另外乙個變數。這個方法就是利用了這一點,現將a,b的疑惑賦值給a,然後a在於b異或(因為b還是原來的b,而a已經被賦值改變了)就得到了最初的a,賦值給b。此時b裡存的是最初的a,a裡存的是a,b異或,然後a在於b異或就得到最初的b,賦值給a。這樣a,b就交換了。

方二:a = a + b;//a = 8

b = a - b;//b = 3

a = a - b;//a = 5

按位「非」操作符,屬於一元操作符,只對乙個運算元進行操作,(其他按位操作符是二元操作符)。按位「非」生成與輸入位相反的值,——若輸入0,則輸出1,若輸入1,則輸出0。

<<      :     左移運算子,num << 1,相當於num乘以2

>>      :     右移運算子,num >> 1,相當於num除以2

>>>    :     無符號右移,忽略符號位,空位都以0補齊

Java的運算子

算數運算子 單目運算子 按位取反 取非 自增 自減 負號 正號 雙目運算子 加 減 乘 除 為正數 取餘 三目運算子 a b?turn false a與b進行比較,a大於b則執行問號後第一項,否則就執行第二項 關係運算子 等於 不等於 大於 大於等於 小於 小於等於 邏輯運算子 與 與 或 或 非 ...

Java運算子 算術 邏輯 位運算子

二元操作符型別提公升問題 一元操作符int a 3 int b a 先賦值,後自增 int c a 先自增,再賦值布林邏輯表達符 邏輯與 邏輯或 邏輯非 邏輯與和邏輯或採用短路的方式,從左向右執行,如果確定值,則不再計算下去。boolean 1 2 2 3 0 沒有拋異常,沒有執行3 0位運算子 取...

(java基礎)java運算子

運算子 operator 加 減 乘 除 int a 1 int b 2 int c a b 0 小數捨掉,不是四捨五入 模 1 2 1 5 3 2 5 3 2 餘數符號與被除數相同 當有若干個資料型別變數參與運算時,結果型別取決於資料型別最大的型別 double a 1 int b 2 doubl...