11 Int和Integer的區別(重點)

2021-10-02 23:45:32 字數 1277 閱讀 4961

1,來,先來一道考題,你看做對了嗎?

integer i1 = new integer(12);

integer i2 = new integer(12);

system.out.println(i1 == i2);

integer i3 = 126;

integer i4 = 126;

int i5 = 126;

system.out.println(i3 == i4);

system.out.println(i3 == i5);

integer i6 = 128;

integer i7 = 128;

int i8 = 128;

system.out.println(i6 == i7);

system.out.println(i6 == i8);

以上這些輸出的答案是什麼?true or false? why?

你可以自己先思考,再看後面的答案分析。

答案揭曉

分情況來比較:f t t(自動拆箱,數值) f t(自動拆箱,數值)

new:一旦new,就是開闢一塊新記憶體,結果肯定是false

不new:看範圍

integer做了快取,-128至127,當你取值在這個範圍的時候,會採用快取的物件,所以會相等

當不在這個範圍,內部建立新的物件,此時不相等

實際比較的是數值,integer會做拆箱的動作,來跟基本資料型別做比較

此時跟是否在快取範圍內或是否new都沒關係

原始碼分析:

當我們寫integer i = 126,實際上做了自動裝箱:integer i = integer.valueof(126);

分析這段原始碼

public static integer valueof(int i) 

//integercache是integer的內部類

private static class integercache {

static final int low = -128;

static final int high;

static final integer cache;

static {

// high value may be configured by property

int h = 127;​​

Integer 和int的區別

1.int是基本的資料型別,直接存數值 2.integer是int的封裝類 integer 是物件,用乙個引用指向這個物件 integer 是乙個類,是int的擴充套件,定義了很多的轉換方法。3.int和integer都可以表示某乙個數值 4.int和integer不能夠互用,因為他們兩種不同的資料...

int和Integer的區別

今天有個學弟問了我乙個面試題 integer a 128 integer b 128 system.out.println a b 輸出什麼?為什麼?說來慚愧,我的直覺告訴我會輸出flase,但突然間還想不出來為什麼。所以寫了個例子研究了下 public static void main strin...

Integer和int的比較

package com.mawei.www public class integertest 和 equals的差異 private static void mytest01 確認有效範圍 private static void mytest02 混合比較 private static void m...