Integer包裝類與基本型別比較值大小,用equal不用‘==’
int為基本型別,判斷是否相等就是可以使用==.
其中的原因(原始碼):
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
這是原始碼中的,也就是說cache中已有-128到127,不在這範圍的會新new ,這時可以理解比較是記憶體地址,所以比較是相等的,如果是用new關鍵字建立的物件,也就是不是同一物件,所以不相等.
所以說當Integer的值不在-128到127的時候使用==方法判斷是否相等就會出錯,在這個範圍之內的就會沒有問題!!!相關推薦
Integer包裝類與基本型別比較值大小,用equal不用‘==’
Integer為物件判斷是否相等還是使用equals最靠譜,或者用Integer的這個intValue()方法轉換成int型別int為基本型別,判斷是否相等就是可以使用==.其中的原因(原始碼):static final Integer cache[] = new Integ
Java包裝類與基本型別進行比較的坑
今天使用Java的包裝類和基本型別做比較的時候發現了包裝本身存在的坑,參考的JDK版本是1.8.0_121,下面是例子程式碼: Short packShort=1; short baseShort=1; Integer packInt=1; int baseI
JAVA中初始化及默認值,包裝類與基本類型
屬於 java val 初始化 成員 als integer 基本數據 lean 當變量作為作為類成員使用時,java才確保給定其初始值,防止程序運行時錯誤 數據類型初始值 byte 0 short 0 int 0 long 0L char ‘u000
java 反射中的包裝類與基本資料型別
寫了個執行反射方法的函式,但是卻老出問題,搗鼓了下,原來是基本資料型別出了問題, 呼叫反射中的方法時,需要知道方法的引數型別, Method getDeclaredMethod(String name, Class<?>... parameterTypes) 但是因為引數是可
Java學習筆記(六)--包裝類、基本型別、拆箱、裝箱
基本型別與包裝類 1.java中包括8個基本型別,與之對應的有8個包裝型別,包裝類是針對原生資料型別的包裝 基本型別 包裝型別byteByte(Number的子類)sh
Java基礎——基本型別和包裝類、基本型別和字串之間的轉換
基本型別和包裝類之間的轉換 基本型別和包裝類之間經常需要互相轉換,以 Integer 為例(其他幾個包裝類的操作雷同哦): 在 JDK1.5 引入自動裝箱和拆箱的機制後,包裝類和基本型別之間的轉換就更加輕鬆便利了。 那什麼是裝箱和拆箱呢?我們分別來看下 裝箱:把基本型別轉換成包裝類,使其具有物件的
Java物件與基本型別賦值
取自Think in Java:賦值使用操作符“=”,它的意思是“取右邊的值,把它複製給左邊的值”,右值可以是任何常數、變數和表示式,但左值必須是一個明確的已命名的變數。對基本型別的賦值還是很簡單的。基本型別儲存了實際的數值,而非指向一個物件的引用(包裝類也是如此)。在遍歷包
Java傳遞基本型別:值傳遞,物件作為引數:引用傳遞
值傳遞:方法呼叫時,實際引數把它的值傳遞給對應的形式引數,方法執行中形式引數值的改變不影響實際參 數的值。 引用傳遞:也稱為傳地址。方法呼叫時,實際引數的引用(地址,而不是引數的值)被傳遞給方法中相對應的形式引數,在方法執行中,對形式引數的操作實際上就是對實際引數的操作,方
Integer比較值大小==,大於等於128的返回false
code: Integer a1 = 127; Integer b1 = 127; if(a1==b1){ System.out.println("相等"); }else{ System.out.println("不等"); } Inte
常用API(一)——String、StringBuffer與基本型別包裝類
String 關於String這個特殊類,我到現在都還沒搞明白,我覺得可能主要是由於沒有搞懂JVM的記憶體結構引起的,但還是對其進行以下記錄。 字串是一個特殊的物件。 字串一旦初始化就不可以被改變。 String str = "abcd"; 以上這句
JavaSE8基礎 Integer 包裝類對象的值不變
包裝類 clas () 查看 new like intval ger nts 禮悟: 好好學習多思考,尊師重道存感恩。葉見尋根三二一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉強身心,誠勸且行且珍惜。 javaSE
常見物件StringBuffer、Arrays類和基本型別包裝類+JAVA學習筆記-DAY13
13.01_常見物件(StringBuffer類的概述) A:StringBuffer類概述 通過JDK提供的API,檢視StringBuffer類的說明 執行緒安全的可變字元序列 B:StringBuffer和String的區別
封裝類Double與基本型別double
Double型別是可以完整表達一個10進位制的小數的。只不過不是書寫的表達,而是邏輯的表達。是不是有點繞嘴?簡而言之,Double型別在進行牽扯到小數的運算的時候一律採用模擬運算。並且Double型別內部封裝的是一個字串“String”型別或者一個科學計數法的整數。為什麼?因
Integer包裝類源碼分析
java看到幾道關於Integer拆裝箱的小題目,正好有點時間翻看了一下Integer類的源碼,加上自己的一點思考,決定寫點東西。 先來看看下面的代碼: 如果這道題你能得出正確答案並了解其中的原理,說明你的基礎還可以。如果你的答案是true和true的話,建議你去看看書。
java Integer包裝類裝箱的一個細節
實現 require gh值 get clu 內部類 fir == lock java有八個基本數據類型,每個都有對應的一個包裝類,比如int對應的Integer。從jdk1.5開始,java引入了自動拆裝箱,可以直接進行形如Integer i = 20形式的賦值,編譯器會
接受引數的包裝類的資料型別寫錯報錯
後臺寫了個方法,接收前臺外掛 bootstrap-table 的queryParams的引數,但是不能拿到。 解決辦法,新增配置項:contentType:"application/x-www-form-urlencoded; charset=UTF-8", 這樣取得了。 引數傳遞過去了,但卻報了400
Java原始碼分析——包裝類與Void類解析
在Java中,有著8種基本型別,其對應著8種包裝型別,分別為:Integer、Long、Short、Boolean、Float、Double、Byte以及Character類,這8種包裝型別分別封裝了對應型別的常用操作以及一些優化操作,比如
C#中的棧和堆、值型別與引用型別、值引數、引用引數、輸出引數、引數陣列
程式執行時,資料必須儲存在記憶體中,一個數據需要多大的記憶體、儲存的位置、如何儲存依賴於該資料的資料型別。執行中的程式使用兩個記憶體區域來儲存資料:棧和堆。 棧: 棧是一
JS 基本型別賦值,引用型別賦值問題
var a = 1; var b = a; a = 3; console.log("a = " + a); console.log("b = " + b); var objA = { "name": "abc", "age": 100 }; var objB = objA; obj
python3理解寫程式碼與基本型別(3)
3.1 什麼是程式碼 什麼是寫程式碼 程式碼是現實世界事物在計算機世界中的對映 寫程式碼是將現實世界中的事物用計算機語言來描述 程式碼和寫程式碼就像畫家畫畫,攝影師拍照 如果我們需要在一個世界中描述另外一個世界裡面的一些事物,我們就需要一些基本的元素和素材,在計