Integer 裝箱拆箱 比較

2022-09-03 14:36:09 字數 1214 閱讀 1199

integer i1 = 40;

integer i2 = 40;

integer i3 = 0;

integer i4 = new integer(40);

integer i5 = new integer(40);

integer i6 = new integer(0);

integer i7 = 0 + 40;

integer i8 = i1 + 0;

integer i9 = i4 + i5;

int i10 = 40;

system.out.println("i1=i2\t" + (i1 == i2)); // true 物件比較 物件池中取的

system.out.println("i1=i2+i3\t" + (i1 == i2 + i3));// true 值比較 凡是在比較中有運算,都會進行拆箱操作,進行值的比較

system.out.println("i1=i7\t" + (i1 == i7)); // true //物件比較

system.out.println("i1=i8\t" + (i1 == i8)); // true //物件比較

system.out.println("i4=i7\t" + (i4 == i7)); // false 物件比較 i4是new的 i7是從物件池取的

system.out.println("i4=i5\t" + (i4 == i5)); // false 物件比較

system.out.println("i4=i5+i6\t" + (i4 == i5 + i6)); // true 值比較 凡是在比較中有運算,都會進行拆箱操作,進行值的比較

system.out.println("i1=i10\t" + (i1 == i10)); // true 值的比較

要點:1.凡是使用加號進行相加,都會進行拆箱操作,進行數值的加減。

2.使用new integer 的方式,是建立新的物件

3.  integer i = 40;       對於等號右側是數值,不是物件,系統會呼叫integer valueof(int i)將其裝箱,如果在-128-127之間,從常量池獲取物件值得物件,否則,建立新的物件。

4.凡是在比較運算(==)中有加減運算,都會對進行拆箱操作,進行數值的比較,不是物件比較。

5.==的一方是integer物件, 一放是數值,會對integer 物件拆箱,進行值比較。

Integer自動拆箱裝箱

integer a new integer 3 integer b 3 int c 3 system.out.println a b system.out.println a c 問題一 上面的輸出為啥?答案 false true 解答 第乙個是兩個引用之間的比較,他們沒有引用同一物件,所以為fal...

Integer自動拆箱 自動裝箱

package com.tmt.test code public class zhuangchaixiiangtest 這個的運算結果是什麼呢?new integer 128 int 128 true new integer 128 new integer 128 false integer 127...

拆箱和裝箱 分析測試Integer

1 integer快取池 在 jdk8 中,integer 快取池可快取的數值範圍為 128 到 127。2 integer.valueof 的valueof分析 1.引數為int 在申請乙個 128,127 內的數時,其實是從 cache 中直接取出來用的,如果不在這個範圍則是 new 了乙個 i...