IP地址類型轉換原理:
將一個點分十進制IP地址字符串轉換成32位數字表示的IP地址(網絡字節順序)。
將一個32位數字表示的IP地址轉換成點分十進制IP地址字符串。
1.Long.ParseLong(String)方法,將 string 參數解析為有符號十進制
long,字符串中的字符必須都是十進制數字。
- parseLong(String s)
- |-->return parseLong(s, 10); //返回一個long開的result基本類型值
2.Long.ValueOf(String) ,參數String表示,指定 String 的值的 Long 對象。該參數被解釋為表示一個有符號的十進制 long,該值與用該參數作為參數的 parseLong(java.lang.String) 方法得到的值非常相似。只是最后被轉換為一個Long的包裝類。
- public static Long valueOf(String s) throws NumberFormatException
- {
- return Long.valueOf(parseLong(s, 10));
- |-->return Long.valueOf(parseLong(s, radix));
- |-->final int offset = 128;
- if (l >= -128 && l <= 127) { // will cache
- return LongCache.cache[(int)l + offset];
- }
- return new Long(l);
- }
- }
3.long a = new Long(String) 實質為構造實例時,在toString中調用了String.valueOf獲得
- public Long(String s) throws NumberFormatException {
- this.value = parseLong(s, 10);
- }
4.Long.decode(String) 方法,特點是將 String 解碼成 Long。接受通過以下語法給出的十進制、十六進制和八進制數:比如ox11,轉換為17
5.Java包裝類型的裝箱拆箱機制
JAVA基本類型,不用new來創建變量,而是創建一個並非是“引用”的“自動”變量。這個變量擁有它的“值”,並置於堆棧中,因此更加高效。
Java中的某些操作只能使用對象,而基本類型不是類類型,不能實例化成對象,比如Collection,就必須以對象實現。
所謂的裝箱指的是基本類型轉換為包裝類型,拆箱指的是包裝類型轉換為基本類型。
2018-05-10更新
今天用findBugs檢查代碼發現“Boxing/unboxing to parse a primitive A boxed primitive is created from a String, just to extract the unboxed primitive value. It is more efficient to just call the static parseXXX method.”這個問題,原來jdk的打包/拆包中直接用:```java Orders order = orderService.getOrderDetailById(Long.valueOf(orderId)); ``` 中的對應的valueOf沒有將參數申明為String類型然后調用包裝類對應的parseXXX效率高,以后得改過來寫法。
