Integer之間的比較不要使用==
有時候用Integer代表int型別的時候經常會判斷是否相等,最習慣的寫法就是aa==bb這種,然而發現這樣存在很大的問題,先看下面兩個場景
場景A:
Integer aa=100;
Integer bb=100;
System.out.println(aa==bb);
System.out.println(aa.equals(bb));
這裡輸出兩個都是true
場景B:
Integer aa=1000;
Integer bb=1000;
System.out.println(aa==bb);
System.out.println(aa.equals(bb));
這裡輸出第一個是false,第二個是true
為啥???
在-128 and 127 之間建立的Integer物件會使用IntegerCahe,它是一個Integer陣列;區間內直接返回陣列中的Integer object,
所以使用比較操作符(==, !=)沒問題;但超過這個區間,還是會new物件出來,用比較操作符自然就不行了,所以對於Object型別,我們無論如何都用equals比較就對了。
相關推薦
Integer之間比較大小
class Test { public static void main(String[] args) { Integer i1 = new Integer(5); Integer i2 = new Integer(5);
Integer之間的比較不要使用==
有時候用Integer代表int型別的時候經常會判斷是否相等,最習慣的寫法就是aa==bb這種,然而發現這樣存在很大的問題,先看下面兩個場景場景A:Integer aa=100;Integer bb=100;System.out.println(aa==bb);System.out.println(aa.eq
Integer 數值比較
str ont eof integer ring align 空間 ace bug //Integer 源碼 private static class IntegerCache { static final int low = -128;
Long與Integer之間的轉換產生的問題
在開發中遇到了一個需要將Integer轉Long的問題,才發現,包裝型別是不能強制轉換的。 基本型別: 一、將long型轉化為int型 long a = 10; int b = (int)a; 二、將int型轉化為long型 i
Long、Integer型別比較是否相等
一、Long型別 1. Long aLong=(long) 128; Long bLong=(long) 128; System.out.println(aLong==bLong); 結果:false =========================== 2. Long aLong=(long
Java中int和integer的比較
Java中,數值型的建立和字串有類似的地方,Integer是Java為了使用物件的屬性和方法給int準備的型別。字串 String s = “bag”; 這樣建立會在常量池中查詢 bag,沒有的話就新建,並不會在堆裡新建。 同樣地,Integer i = 11;也不會在堆裡
java各型別String,int,char,long,StringBuilder,StringBuffer,Integer之間的轉換總結
String和char型別之間的轉換: 1、 String→char:因為String是字串,而char是單個字元,只能把String 轉化為char陣列,方法為 char []ch=str.toCharArray(); 2、char→String: 方法如下: 方法一:St
Integer.valueOf()比較,最安全方式
Integer i1 = null; // if(4==i1){//java.lang.NullPointerException // System.out.println("4==i1"); // }
Integer 使用==比較
@Test public void test1() { Integer i1=1; Integer i2=1; System.out.printl
淺析List中Integer型別比較的錯誤
相信很多人都會有想用List集合存int資料的時候(或許是用於後續遍歷),初始我的第一反應是下圖,經驗證會報錯,雖要將int存入,但初始化時需要初始為Integer型別。正確的初始化如下實際上是由於我的軟體構造實驗課lab1中一個困擾我近三個小時的程式bug,讓我想到了開這樣
Java中Integer直接比較大小
Integer a = -1250; Integer b = -1250; System.out.println(a == b); Integer c = -125; Integer d = -125
int與integer的比較大小
Integer是int的封裝類,int與Integer比較時,Integer會自動拆箱,無論怎麼比,int與Integer都相等, Integer比較時,檢視java原始碼可知道,在-128與127之間,Integer會自動存在記憶體中,再有時,直接從記憶體中去取,不在這個
JAVA Integer值比較問題
今天看到專案中很多地方用Integer 比較,覺得有不妥之處,先記錄下。 java中Integer型別對於-128-127之間的數是緩衝區取的,所以用等號比較是一致的。但對於不在這區間的數字是在堆中new出來的。所以地址空間不一樣,也就不相等。 所以,以後碰
int、Integer、Integer.valueOf()、new Integer的比較
public class Test{ public static void main(String[] args){ test1(); } public static void test1(){ Integer m=127; Intege
java中Integer數值比較
java中的Interger數值比較 首先,分別出“==”和“equal”的差別:“==”是對應的地址相等和內容相等,“equal”是對應的內容想等; 然後,Integer物件在進行計算比較是會進行自動拆箱,也就是說Integer a = 10; int b = 10; 判
DataTabe(DataRow)之間比較求交集、並集、差集
DataSet ds = new DataSet(); ds.Locale = CultureInfo.InvariantCulture; FillDataSet(ds); DataTable conta
string int Integer之間的轉換以及日期問題[轉]
如何將字串 String 轉換成整數 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何將字串 String 轉換成Integer ? Integer integ
字串與int、Integer之間互轉
1、如何將字串String轉化為整數int int i = Integer.parseInt(str); int i = Integer.valueOf(my_str).intValue(); 注: 字串轉成Double, Float, Long的方法大同小異。
Integer值比較的問題
最近開發中,遇到一個問題,兩個Integer型別的值,進行比較時,明明兩個值是相等的,但是用==比較卻是false,結果這是一個很low的問題,記錄一下 程式碼片段: Integer a = 100; Integer b = 100;
OSI與TCP/IP, 之間比較!
TCP/IP參考模型: TCP/IP參考模型是最早的計算機網路ARPANET及其以後的Internet使用的參考模型,是一個事實上模型。這個體系的主要兩個協議是:TCP/IP協議。OSI模型的具體分層以及各層主要協議如表1右側所示。其中IP協議提供分組交換服務;TCP協議