Java 基礎-運算子

wangyy發表於2018-01-16

1. char ch = '您'

char型別的資料是兩個位元組

一個漢字是兩個位元組,由16個二進位制組成的. 所以char型別的資料可以裝中文

2.

short s = 3;

s= s+2; 和  s += 2; 有什麼區別?

答:s= s+2; 編譯失敗因為s+ 2 時s會被提升為int型別,運算後的結果還是int型別,無法賦值給shot型別。 int型別是32個二進位制位,四個位元組, shot是16個二進位制位2個位元組,所以編譯時會精度丟失的異常

而 s += 2 編譯通過,+=運算子在給s賦值時自動完成了強轉操作。

在JAVA中一共有八種基本資料型別,他們分別是 byte、short、int、long、float、double、char、boolean 
其中byte、short、int、long都是表示整數的,只不過他們的取值範圍不一樣 
byte的取值範圍為-128~127,佔用1個位元組(-2的7次方到2的7次方-1) 
short的取值範圍為-32768~32767,佔用2個位元組(-2的15次方到2的15次方-1) 
int的取值範圍為(-2147483648~2147483647),佔用4個位元組(-2的31次方到2的31次方-1) 
long的取值範圍為(-9223372036854774808~9223372036854774807),佔用8個位元組(-2的63次方到2的63次方-1)

3.邏輯運算子  -- 用於連線Boolean型別的表示式

& 與 :  true & true = true; true & false = false;  false & false = false;   特點: 都為真才是真

| 或:  true | true = true; true | false = true; false | false = false;  特點: 只要有一個為真就是真

^ 異或 :  true ^  true = false; true ^  false = true; false ^ false = false;  特點:兩邊相等結果是假,兩邊不同才是真;  可以參與位運算

! 非: !true = false;

&& 與 (短路功能)

& 和 && : 1. &無論左邊是真是假,右邊都運算; && 當左邊為假時,右邊不再運算,結果就是假  2. &可以參與位運算,

| 和 || :1 .  | 兩邊都參與運算; || 當左邊為真,右邊不運算; 2. | 可以參與位運算

4. 位運算子:左移,右移,無符號右移

<< 左移 : 其實是乘以2的n次冪

>> 右移: 其實除以2n次冪,最高位補什麼由原有資料的最高位值定: 如果最高位是0,右移後,用0補空位;如果最高位為1,右移後用1補空位

>>> 無符號右移:無論最高位是什麼,右移後,都用0補

例如:

3<<2 的運算過程:

    3的二進位制:         0000-0000 0000-0000 0000-0000 0000-0011

   左移兩位:        0000-0000 0000-0000 0000-0000 0000-0011        兩個高位00捨棄

  空位補0:              0000-0000 0000-0000 0000-0000 0000-1100      =12

6>>2 的運算過程:

  6的二進位制:          0000-0000 0000-0000 0000-0000 0000-0110

 右移兩位:                 0000-0000 0000-0000 0000-0000 0000-0110  兩個低位10捨棄

空位補0:                0000-0000 0000-0000 0000-0000 0000-0001   = 1

 

6 & 3 = 2的運算過程:110  &  011 = 010

6 | 5 =  7 的運算過程: 110  |  101 =  111

6 ^ 5  = 3 的運算過程: 110  |  101 =  011

 ~ 反碼: 

~6的運算過程:

6的二進位制:          0000-0000 0000-0000 0000-0000 0000-0110

取反                       1111-1111  1111-1111   1111-1111  1111-1001  = -7

求取反後的十進位制結果:(減一再取反)

減一                       0000-0000 0000-0000 0000-0000 0000-0001

  減一的結果           1111-1111  1111-1111   1111-1111  1111-1000

取反                      0000-0000 0000-0000 0000-0000 0000-0111  = 7

 因為1111-1111  1111-1111   1111-1111  1111-1001 減一再取反後結果是7 ,所以1111-1111  1111-1111   1111-1111  1111-1001就是-7 也就是 ~6 = -7

負數的表現形式:  例如:-6的表現形式是 6取反加1  也就是 -6 = ~6+1 = -7 + 1

 

相關文章