程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java 基本數據類型-IdentityHashMap中 直接放入基本數據類型與 new Integer()的區別

java 基本數據類型-IdentityHashMap中 直接放入基本數據類型與 new Integer()的區別

編輯:編程綜合問答
IdentityHashMap中 直接放入基本數據類型與 new Integer()的區別

import java.util.*;
public class Test{

public static void main(String[] args) {
    // TODO Auto-generated method stub
    IdentityHashMap<Integer, String> map =new IdentityHashMap<Integer, String>(); 
    String s1 =new String("test");
    map.put(new Integer(4), s1);
    map.put(new Integer(4), s1);
    System.out.println(map.size());
    map.put(4, s1);
    map.put(4, s1);
    System.out.println(map.size());

    for(String s : map.values()){
        System.out.println(s);
    }
}

}
基本數據類型放入集合中java自動集裝箱不是應該會創建相應的外部包裝器嗎?為什麼map.put(new Integer(4), s1); 與 map.put(4, s1);的效果不一樣

最佳回答:


map.put(4, s1);//這兩裝箱後用的是Integercache中的,是同一個對象,integer會初始化-128-127到integercache中,這些整型裝箱時都是一個對象
map.put(4, s1);

map.put(new Integer(4), s1);//new出來的,是兩個不同的對象
map.put(new Integer(4), s1);    

    你可以改成map.put(129, s1);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved