標籤:
註:因為此次學習打算看一遍相關Java源碼,所以更新速度一開始會相對慢一些。還有就是不得不佩服那群大牛啊,演算法不是一時半會能懂的,本來打算直接弄懂的,後來感覺這樣效率太低了,所以決定大體上通讀一遍,反正以後肯定還會回來再次學習。
Java作為一種強型別語言,意味著每一個變數都會有特定的類型,Java共有8種基本類型,其中有4種整型(byte、short、int、long)、兩種浮點型(float、double)、1種字元型(char)和一種布爾型(boolean),值得注意的是,雖然字串String非常常用,但是它卻不屬於基本類型。
一、整型
整型在表示沒有小數部分的數值,允許負數(Java中沒有無符號類型,即unsigned),電腦中的儲存資訊的最小單位是位(bit),儲存容量的基本計量單位是位元組(Byte),一個位元組佔8個位,整型資料的取值範圍根據其儲存的位元計算,即2的N次方,例如byte類型佔1個位元組,佔8個位,所以共有256個值,負數包括-128~-1,正數包括0~127。同理,整型資料的儲存需求和取值範圍如下:
| 類型 |
儲存需求(位元組) |
取值範圍 |
| byte |
1 |
-128 ~ 127 |
| short |
2 |
-32768 ~ 32767 |
| int |
4 |
約等於-21億 ~ 21億 |
| long |
8 |
正常使用中不太可能溢出,範圍約為-92億億 ~ 92億億 |
另外在程式中處理整型資料時可能會用到各種類型的寫法,以下列出幾種常用的:
| 寫法 |
含義 |
備忘 |
| 12345 |
十進位 |
與書面相同 |
| 12345L |
十進位,長整型(long) |
如果數值大於int型資料的最大值卻沒有加L,會報錯 |
| 012345 |
八進位 |
不推薦,易混淆 |
| 0x12345 |
十六進位 |
位元據的另類標記法,便於書寫和記憶 |
| 0b10010101 |
二進位 |
Java 7新加入的寫法,之前版本不支援 |
| 1_000_000 |
字面量分割 |
與書面中1,000,000相同,Java 7新加入的寫法,編譯器會自動忽略底線 |
以下是在大體上略一遍源碼時的疑問及解答:
1.Integer.parseInt和Integer.valueOf有什麼區別?
parseInt返回的是int型資料,而valueOf返回的是Integer封裝類型,後者可以調用Integer中的API進行其他動作。
2.Integer.getInteger是幹什麼用的?
在日常開發中接觸較少,用來擷取系統參數的,源碼中調用System.getProperty(String key),然後使用decode進行解析
3.Integer.decode和Integer.valueOf有什麼區別
前者可以解析0x,#等表示的其他進位,而後者只能轉換十進位
還需要注意的地方有,Byte和Short的compareTo是直接計算差值,即a-b,而Integer和Long的compareTo卻是返回-1、0和1;Byte、Short、Integer的hashCode()為返回當前數值的int值,而Long類型的處理方法為return (int)(value ^ (value >>> 32));
再回首,Java溫故知新(三):Java基礎資料型別 (Elementary Data Type)之整型