Character和char是一回事吗?

时间:2016-10-07 02:57:10

标签: java char character

我有一张地图。  Map<Character, Integer> map1 = new TreeMap<Character, Integer>();

我使用此地图存储我在扫描文件时遇到的唯一字符。我收到String并使用String.toCharArray()来存储char数组中的字符。

如果我尝试从我的char数组中放一个元素,比如说map1.put(charay[I], 1),那么地图会将它解释为它的包装类吗?或characterchar不同。我正在做一些研究,看起来你在原始数据类型不能工作时会使用包装类(比如地图),但是我会做什么工作?

2 个答案:

答案 0 :(得分:1)

字符和字符不一样,前者是一个类,后者是一个原始类型,尽管如你所说,类可以被认为是提供一个对象实例&#34; wrapper&#34;在仅允许对象而不是基元的位置表示基本类型。

在你的代码表明必须从一个转换到另一个转换的任何地方,而不是给你一个编译器错误,而java编译器(javac)将为你插入自己的代码,代码将进行转换为了你。转换称为自动装箱和自动拆箱,相当于执行Character.valueOf(char)和Character.charValue()。此外,编译器将对生成的Character对象进行缓存以限制内存消耗。自动装箱只是编译器插入此转换和缓存代码,以便您的可见代码看起来更干净,但实际上发生了什么,编译器只插入了一些额外的代码。

答案 1 :(得分:0)

是。来自链接的Autoboxing(注意示例),

  

Autoboxing 是Java编译器在基元类型和相应的对象包装类之间进行的自动转换。例如,将int转换为Integer,将double转换为Double,依此类推。如果转换采用另一种方式,则称为拆箱

     

以下是自动装箱的最简单示例:

Character ch = 'a';