Integer類 與equals區別與使用

2021-08-08 08:17:50 字數 867 閱讀 7659

public

static

void

test()

輸出結果: 

true 

true 

public

static

void

test()

輸出結果: 

false 

true 

結論:大家都知道」==「是比較兩個變數的值是否相等、對於引用型變數表示的是兩個變數在堆中儲存的位址是否相同。 equals操作表示的兩個變數是否是對同乙個物件的引用,即堆中的內容是否相同。 

但是為什麼等於1的時候==返回是true呢?

integer a=150;//會將int型別通過valueof轉換成integer型別。下面是valueof原始碼。

static

final

int low = -128;

public

static integer valueof(int i)

也就是說在-128到127之間的值會快取到integercache.cache中,所以在integer x=在-128到127之間時,返回的是同乙個物件,所以出現了上文的情況。(如果換成 >、>=、<、<=會出現什麼情況呢?這中情況會自動拆箱比較值,也就是下面的拆箱操作。) 

在看下面**

public

static

void

test()

輸出結果: 

true 

true 

原理:因為與初始化值做比較的時候,會將封裝型別進行拆箱操作,轉換為基本型別。這裡比較的就是基本型別的值了。

關於Integer類中equals和 的區別

關於equals和 的區別 equals方法是integer類中過載object類的equals方法,object類中的equals方法用來判斷兩個物件變數所指的是否為同乙個物件。經過載後,equals方法用來判定兩個integer物件是否具有相同的int值,若相同,返回結果為true。運算子用於比...

String類與equals方法

常見的string類例項化方式有兩種 public class strings 第一種方式是直接賦值的型別。先在常量池中給 abc 字串分配空間,然後讓str指向常量池中的 abc 執行string str2 abc 前先在常量池中檢查有沒有abc字串,要是有就直接讓str2指向該字串。所以str跟...

關於資料庫number與integer型別的區別

引自 留意oracle中integer和number的區別 建表的時候,如果是浮點數,一般設定為 number m,n m為精度,n為小數字數,所以整數為m n位 整數設定為integer 比如 create table abc a number 38,0 b number 38 c integer...