Java HashMap只能存储对象键和值

Java HashMap只能存储对象键和值,java,hashmap,Java,Hashmap,HashMap不接受基元类型作为键和值,但我们仍然可以按如下方式轻松存储基元类型的值: HashMap h = new HashMap(); h.put(1,1); 这是怎么可能的?当您将原语存储在HashMap或任何集合中时,它们会被装箱到引用类型中。int被装箱为整数。这是因为1被自动装箱为整数,实际上与以下内容相同:Integer.valueOf1。查找有关的更多信息 int被装箱为整数 long被装箱成long 双人间是用盒装成双人间的 浮动被装箱以浮动 布尔值被装箱为布尔值 在您的

HashMap不接受基元类型作为键和值,但我们仍然可以按如下方式轻松存储基元类型的值:

HashMap h = new HashMap();

h.put(1,1);

这是怎么可能的?

当您将原语存储在HashMap或任何集合中时,它们会被装箱到引用类型中。int被装箱为整数。

这是因为1被自动装箱为整数,实际上与以下内容相同:Integer.valueOf1。查找有关的更多信息

int被装箱为整数 long被装箱成long 双人间是用盒装成双人间的 浮动被装箱以浮动 布尔值被装箱为布尔值 在您的示例中,您使用的是地图的原始类型。您声明的映射对象最有可能声明如下:

Map<Integer, Integer> h = new HashMap<>();
h.put(1, 1);

阅读本文中有关原始类型的更多信息。

原语由编译器自动装箱并作为包装器对象插入。因此,在您的情况下,它将自动装箱为整数对象。有关详细信息,请参阅。每个基元类型都有相应的包装器对象,其中一些类似:

primitive - Object  
   byte   -  Byte
   char   -  Character
   short  -  Short
   int    -  Integer
   long   -  Long
   double -  Double
   float  -  Float
   boolean - Boolean
正如任何Java程序员所知道的,您不能放置int或其他原语 将值放入集合中

集合只能保存对象引用, 因此,必须将原始值装箱到适当的包装器类中 对于int,它是整数

当你把物体拿出来的时候 在集合中,你得到你输入的整数;如果你需要一个 int,则必须使用intValue方法取消对整数的装箱。所有这些 装箱和拆箱是一件痛苦的事,会把代码弄得乱七八糟

自动装箱和取消装箱功能使流程自动化,消除了 痛苦和混乱


被否决的回答方式是不提问。我们可以通过在几秒钟内回答来鼓励这种类型的问题吗?了解泛型和接口。您的代码应该是Map h=newhashmap;是的,java通过使用自动装箱和in-boxing将int转换为整数,那么您希望得到什么呢?您的问题非常不清楚,也可以使用更好的格式。请阅读并编辑您的问题以澄清它。