Long.ValueOf("String") Long.parseLong("String") 區別 看JAVA包裝類的封箱與拆箱


IP地址類型轉換原理:
將一個點分十進制IP地址字符串轉換成32位數字表示的IP地址(網絡字節順序)。
將一個32位數字表示的IP地址轉換成點分十進制IP地址字符串。


1.Long.ParseLong(String)方法,將 string 參數解析為有符號十進制  long,字符串中的字符必須都是十進制數字。

[java]  view plain copy
  1. parseLong(String s)  
  2.   |-->return parseLong(s, 10);  //返回一個long開的result基本類型值  
 

2.Long.ValueOf(String) ,參數String表示,指定 String 的值的 Long 對象。該參數被解釋為表示一個有符號的十進制 long,該值與用該參數作為參數的 parseLong(java.lang.String) 方法得到的值非常相似。只是最后被轉換為一個Long的包裝類。

 

  1. public static Long valueOf(String s) throws NumberFormatException  
  2.    {  
  3.      return Long.valueOf(parseLong(s, 10));  
  4.       |-->return Long.valueOf(parseLong(s, radix));  
  5.            |-->final int offset = 128;  
  6. if (l >= -128 && l <= 127) { // will cache  
  7.     return LongCache.cache[(int)l + offset];  
  8. }  
  9.        return new Long(l);  
  10.    }  
  11.    }  

3.long a = new Long(String) 實質為構造實例時,在toString中調用了String.valueOf獲得 

[java]  view plain copy
  1. public Long(String s) throws NumberFormatException {  
  2. this.value = parseLong(s, 10);  
  3.    }  
 

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效率高,以后得改過來寫法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM