1. 程式人生 > >Integer的自動拆裝箱問題

Integer的自動拆裝箱問題

@Test
    public void test1(){
        Integer aInteger=100;
        Integer bInteger=100;
        System.out.println(aInteger==bInteger);//true
        Integer cInteger=200;
        Integer dInteger=200;
        System.out.println(cInteger==dInteger);//false
        /**
         * 原因:
         * Integer aInteger=100;實際內部裝箱為:Integer integer=Integer.valueOf(100);
         * 而在Integer.vavalueOf()方法內有IntegerCache快取,程式碼為:
         *  public static Integer valueOf(int i) {
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
                return new Integer(i);
            }
            IntegerCache.low=-128 IntegerCache.high=127,所以-128~127以內的數是有快取的,超過該範圍則會重新new一個
         *
         */        
    }

相關推薦

java面試題12--Integer--自動裝箱

package integer; public class IntegerDemo { /** * 建立Integer物件時,原始碼:Integer.valueOf(傳入值)

自動裝箱-Integer的快取機制

Integer是有小資料快取的機制的,那麼第一個是否應該是true呢? 迴歸下第一個:   Integer num1 = new Integer(100); Integer num2 = new Integer(100

Integer自動裝箱問題

@Test     public void test1(){         Integer aInteger=100;         Integer bInteger=100;         System.out.println(aInteger==bInteger)

int 和 Integer 有什麼區別。請簡單的寫一段有關自動裝箱的程式碼。

//1 Integer a =10; Integer a1=10; System.out.println(a==a1);//true //2 Integer b=128; Integer

Integer自動箱與自動裝箱的注意事項

java虛擬機器非常的智慧,能自動的幫助我們自動裝箱與拆箱。雖然它自動幫我們處理這些事情很是方便,但是並不是總是這樣的。有時候或許我們就會因為忽略掉這些小細節而給我們的程式留下一些bug。下面我們就來

IntegerCache快取佔用堆、棧、常量池的問題,自動裝箱的基本概念,Integer==int時的問題說明

原創宣告:作者:Arnold.zhao 部落格園地址:https://www.cnblogs.com/zh94 先普及一個基本概念:Java中基本資料型別的裝箱和拆箱操作 自動裝箱 在JDK5以後,我們可以直接使用Integer num = 2;來進行值的定義,但是你有沒有考慮過?Integer是一個物件呀,

自動裝箱,string和基本數據類型的相互轉換

integer sta intval stat ger main package bsp div 1 package com.pang.demo1; 2 3 public class Demo01 { 4 public static void main(

關於java的自動裝箱若幹細節問題

pack 參數 prim gets 調用 store 成對 rac icon 一、首先需要了解的幾個前提: 1、自動裝箱過程是通過調用valueOf方法實現(如Integer.valueOf(10)),而拆箱過程是通過調用包裝器的 xxxValue方法實現(如Integer

Java包裝類的自動裝箱

true space cells 報錯 div ola ack 不同 text 題目: Integer i = 42; Long l = 42l; Double d = 42.0; 下面為true的是 A.(i == l) B.(i

Java支持的數據類型有哪些?什麽是自動裝箱

一個 之間 包裝類 code char 數據 ava 什麽是 布爾型 Java有8種基本數據類型: 整數型:byte(8)、short(16)、int(32)、long(64) 浮點類型:float(32)、double(64) 字符型:char(16位的Unicode字符

一文讀懂什麽是Java中的自動裝箱

.com 空指針異常 http har 三目運算 容器 ava eof 關系 基本數據類型 基本類型,或者叫做內置類型,是Java中不同於類(Class)的特殊類型。它們是我們編程中使用最頻繁的類型。 Java是一種強類型語言,第一次申明變量必須說明數據類型,第一次變量

java自動裝箱,介面和抽象類

1.Java支援的資料型別有哪些?什麼是自動拆裝箱? Java語言支援的8中基本資料型別是: byte short int long float double boolean char 自動裝箱是Java編譯器在基本資料型別和對應的物件包裝型別之間做的一個轉化。比如:把int轉化成Integ

Java自動裝箱(Autoboxing and unboxing)學習

在學習併發的過程中,用“Boolean bool = true”的自動裝箱方式初始化了兩個物件鎖去鎖兩塊程式碼,結果執行的時候出現了競爭等待,除錯了一下發現兩個鎖變數指向的是同一個物件,由此可見我對自動拆裝箱的機制想的太簡單了,查了一下,發現這個機制還挺細節,那就記錄一下: 本文主要有以下幾個方

Java的自動裝箱

基本資料型別 基本型別,或者叫做內建型別,是Java中不同於類(Class)的特殊型別。它們是我們程式設計中使用最頻繁的型別。 Java是一種強型別語言,第一次申明變數必須說明資料型別,第一次變數賦值稱為變數的初始化。 Java基本型別共有八種,基本型別可以分為三類: 字

慎用自動裝箱

先上程式碼: public static void main(String[] args) throws InterruptedException { Integer z = null; printf(z); } public static vo

什麼是Java中的自動裝箱

本文主要介紹Java中的自動拆箱與自動裝箱的有關知識。   1、基本資料型別   基本型別,或者叫做內建型別,是Java中不同於類(Class)的特殊型別。它們是我們程式設計中使用最頻繁的型別。 Java是一種強型別語言,第一次申明變數必須說明資料型別,第

java學習記錄-自動裝箱

自動拆裝箱:Java 編譯器把原始型別自動轉換為封裝類的過程稱為自動裝箱(autoboxing),這相當於呼叫 valueOf 方法 Integer a = 10; Integer b = Integer.valueOf(10); System.out.println(a == b); // tru

關於自動裝箱時的陷阱

1 /* 2 * 自動裝箱的陷阱 3 * 1、兩個包裝類進行比較時,包裝類的"=="運算在不遇到算術運算的情況下不會自動拆箱,如下例若判斷c==g則會報編譯錯誤; 4 * 2、兩個包裝類進行比較時, 包裝類的"equals()"方法不處理資料轉型的關係,如下例的g.equals(a+b)為

Java學習筆記——包裝類及自動裝箱

在Java中資料分為兩種型別:1.基本資料型別   2.引用資料型別 基本資料型別:   int、double、float、long、byte、boolean、char、short 包裝類就是7種基本資料型別對應封裝起來的類,Integer、Double、Flo

一文讀懂什麼是Java中的自動裝箱

本文主要介紹Java中的自動拆箱與自動裝箱的有關知識。 一、基本資料型別 基本型別,或者叫做內建型別,是Java中不同於類(Class)的特殊型別。它們是我們程式設計中使用最頻繁的型別。 Java是一種強型別語言,第一次申明變數必須說明資料型別,第一次變數賦值稱為變