java 實現將Object類型轉換為int類型
Object object = null;try{ Integer.parseInt(object.toString());}catch (NumberFormatException e){}也可以先判定一下是否是Integer
//可以先判定一下是否是IntegerObject object = '111';if (object instanceof Integer) { Integer.parseInt(object.toString());}String轉化Integer碰見的坑
項目開發中使用Interger將字符串轉為Integer類型,并進行相應的比較,開始數據較小,并未發現問題,如15
String a = '15';System.out.println(Integer.valueOf(a) == Integer.valueOf('15'));
返回的結果為true,但是給我423
String a = '423';System.out.println(Integer.valueOf(a) == Integer.valueOf('423'));
返回的結果為false,立馬查看Integer的源碼,發現了如下代碼
public static Integer valueOf(int i) { final int offset = 128; if (i >= -128 && i <= 127) { // must cache return IntegerCache.cache[i + offset]; } return new Integer(i); }
發現jdk未-128到127的數據做了一個緩存,如果數字在這個范圍內,是不會再從新new Integer的。問題,明白了,當為423時,會創建2個對象,而我們比較是使用 == 比較地址符的,所以肯定不相同。
我們可以查看下內存地址。15的內存地址
423的地址
423的內存地址不一樣。所以我們需要使用equals來做比較,不應該使用==來比較
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
1. ASP中常用的22個FSO文件操作函數整理2. 無線標記語言(WML)基礎之WMLScript 基礎第1/2頁3. ASP調用WebService轉化成JSON數據,附json.min.asp4. .Net core 的熱插拔機制的深入探索及卸載問題求救指南5. SharePoint Server 2019新特性介紹6. html清除浮動的6種方法示例7. 讀大數據量的XML文件的讀取問題8. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執行過程解析9. React+umi+typeScript創建項目的過程10. Vue+elementUI下拉框自定義顏色選擇器方式
