91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中int和Integer的區別是什么

發布時間:2021-01-19 16:59:11 來源:億速云 閱讀:184 作者:Leah 欄目:編程語言

這篇文章給大家介紹java中int和Integer的區別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1、Integer是int的包裝類,int則是java的一種基本數據類型

2、Integer變量必須實例化(new 一下是最常見的實例化)后才能使用,而int變量不需要

3、Integer實際是對象的引用,new Integer(),實際上是生成一個指針指向此對象;而int則是直接存儲數據值

4、Integer的默認值是null,int的默認值是0

注意

Integer對象會占用更多的內存。Integer是一個對象,需要存儲對象的元數據。但是int是一個原始類型的數據,所以占用的空間更少

關于Integer和int的比較

1. 兩個new實例化出來的Integer變量比較,結果為false.

/**
 * @author tracydzf
 *比較兩個new出來的Integer
 *
 */
public class Test {

  public static void main(String[] args) {
    Integer a = new Integer(100);
    Integer b = new Integer(100);
    System.out.println(a==b);
    //輸出false    
  }
}

當new一個Integer時,實際上是生成一個指針,指向此對象,兩次new Integer生成的是兩個對象,對象儲存在堆當中,其內存地址不同,所以兩個new出來的Integer變量不等。

2.int 和Integer在進行比較的時候,Integer會進行拆箱,轉為int值與int進行比較

/**
 * @author tracydzf
 *int 和 Integer的比較
 *
 */

public class Test {

  public static void main(String[] args) {
    Integer a = new Integer(100);
    int b = 100;
    System.out.print(a == b); //true  
  }
}

3.非new生成的Integer變量和new Integer()生成的變量比較時,結果為false。(因為非new生成的Integer變量指向的是java常量池中的對象,而new Integer()生成的變量指向堆中新建的對象,兩者在內存中的地址不同)

/**
 * @author tracydzf
 * Integer 和 new Integer的比較
 *
 */
public class Test {

  public static void main(String[] args) {
    Integer a = new Integer(100);
    Integer b = 100;
    System.out.print(a == b); //false  
  }
}

4.對于兩個非new生成的Integer對象,進行比較時.

注意:

① java在編譯Integer i = 100 ;時,會翻譯成為Integer i = Integer.valueOf(100),java API中對Integer類型的valueOf的定義如下:

public static Integer valueOf(int i){
  assert IntegerCache.high >= 127;
  if (i >= IntegerCache.low && i <= IntegerCache.high){
    return IntegerCache.cache[i + (-IntegerCache.low)];
  }
  return new Integer(i);
}

② 當自動裝箱后生成的Integer的對象,其值 -128<= x <= 127 時,這個對象會直接取緩存IntegerCache中的對應的對象,生成的當然也是個對象。

我們來看看例子

這里a跟b都是128,不會再IntegerCache取緩存對象,所以是false.

/**
 * @author tracydzf
 * Integer 和 Integer的比較
 *
 */
public class Test {

  public static void main(String[] args) {
    Integer a = 128;
    Integer b = 128;
    System.out.print(a == b); //false  
  }
}

a,b都是127,數值相等,且滿足在IntegerCache取緩存的條件,所以對象相等.

/**
 * @author tracydzf
 * Integer 和 Integer的比較
 *
 */
public class Test {

  public static void main(String[] args) {
    Integer a = 127;
    Integer b = 127;
    System.out.print(a == b); //true
  }
}

關于java中int和Integer的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图片| 玉山县| 陆河县| 黄骅市| 阿坝| 长武县| 惠东县| 监利县| 利辛县| 枣强县| 青海省| 屏山县| 东乡县| 合水县| 连江县| 石泉县| 兴化市| 五华县| 集贤县| 五指山市| 孟州市| 乌兰县| 镇宁| 永年县| 宁都县| 广东省| 九龙坡区| 威信县| 五家渠市| 塘沽区| 石楼县| 灌南县| 南投县| 偏关县| 吐鲁番市| 富平县| 青州市| 双鸭山市| 准格尔旗| 甘孜县| 池州市|