Java學習筆記第05期——Java基礎語法Part4
阿新 • • 發佈:2021-02-13
Java 基礎語法 Part4
在有關我筆記分享的部落格中,我都會將MD筆記檔案另外發布,方便朋友們下載學習。(粉絲可下載)
本期筆記檔案下載地址:https://download.csdn.net/download/lbwnbnbnbn/15225075
Ayo大家好我是Tomatooo,這是我的Java學習筆記第4期,話不多說直插主題——
運算
整數運算
Java整數運算遵循四則運算原則,可以使用括號等
整數在運算時只會保留整數部分,並不像設想的那樣會四捨五入
求餘運算使用%
示例:
int a = 66666%123 //這裡是求66666/123的餘數
特別注意:整數的除法對於除數為0時執行時將報錯,但編譯不會報錯。
溢位
之前筆記提到過,整數存在範圍限制,如果計算結果超出了範圍,就會造成溢位,而溢位不會出錯,只會得到一個意料之外的結果
自增/自減
Java提供了++
運算和--
運算,它們可以對一個整數進行加1和減1的操作
注意:++
寫在前面和後面計算結果是不同的,++n
表示先加1再引用n,n++
表示先引用n再加1。
移位運算
在計算機中,整數總是以二進位制的形式表示。
例如,
int
型別的整數7
使用4位元組表示的二進位制如下:
00000000 00000000 00000000 00000111
可以對整數進行移位運算。對整數
7
左移1位將得到整數14
,左移兩位將得到整數28
示例:
int n = 7; // 00000000 00000000 00000000 00000111 = 7
int a = n << 1; // 00000000 00000000 00000000 00001110 = 14
int b = n << 2; // 00000000 00000000 00000000 00011100 = 28
int c = n << 28; // 01110000 00000000 00000000 00000000 = 1879048192
int d = n << 29; // 11100000 00000000 00000000 00000000 = -536870912
左移29位時,由於最高位變成
1
,因此結果變成了負數。同理,右移符號為>>
還有一種無符號的右移運算,使用>>>
,它的特點是不管符號位,右移後高位總是補0
,因此,對一個負數進行>>>
1
變成了0
對byte
和short
型別進行移位時,會首先轉換為int
再進行位移。
仔細觀察可發現,左移實際上就是不斷地×2,右移實際上就是不斷地÷2。
位運算
與、或、非和異或的運算
- 與運算:必須兩個數同時為
1
,結果才為1
- 或運算:只要任意一個為
1
,結果就為1
- 非運算:
0
和1
互換
示例:
n = ~0; // 1
n = ~1; // 0
- 異或運算:如果兩個數不同,結果為
1
,否則為0
示例:
n = 0 ^ 0; // 0
n = 0 ^ 1; // 1
n = 1 ^ 0; // 1
n = 1 ^ 1; // 0
對兩個整數進行位運算,實際上就是按位對齊,然後依次對每一位進行運算。
public class Main {
public static void main(String[] args) {
int i = 167776589; // 00001010 00000000 00010001 01001101
int n = 167776512; // 00001010 00000000 00010001 00000000
System.out.println(i & n); // 167776512
}
}
運算優先順序
在Java的計算表示式中,運算優先順序從高到低依次是:
()
!
~
++
--
*
/
%
+
-
<<
>>
>>>
&
|
+=
-=
*=
/=
不用全部記住,要確保正確只要加括號就好