老师 有char Character 为啥还要String?
来源:3-2 为啥老用不好日期计算?
![](http://img1.sycdn.imooc.com/user/670f76090001881101000100-100-100.jpg)
春去_秋来
2020-09-11
老师 有char Character 为啥还要String? 有什么用
2回答
-
春去秋来你好:
我们先来说一说 char 和 Character 的关系:Character 是 char 的包装器类,就像 Integer 和 int,包装器类和基本类型可以自动转换,这个叫做自动封箱和自动拆箱。这个思想和作用比较简单,我这里就不再赘述了。那么,下面,我来解释下 char(包装器类也是一样的) 和 String 的不同。
由于 Java 采用的是 16 位的 Unicode 字符集,即 UTF-16,所以在 Java 中 char 数据类型是定长的,其长度永远只有 16 位,char 数据类型永远只能表示代码点在 U+0000 ~ U+FFFF 之间的字符,也就是在 BMP 内的字符。
我们来看一个例子,你可以把以下的代码直接粘贴到你的 IDEA 中:
char c1 = '?'; char c2 = '\u64321'; String s1 = "?"; String s2 = "\u64321";
你会发现,使用 char 数据类型来保存那个特殊的字符,编译器将会报错 Invalid character constant。所以:
(1)如果代码点超过了这个范围,即使用了增补字符,那么 char 数据类型将无法支持;
(2)因为增补字符需要 32 位的长度来存储,我们只能转而使用 String 来存储这个字符。
此外,我们应该绝大多数的情况都应该考虑使用 String,而不是 char。毕竟,String 是 Java 中的对象,它会给你带来很多便利。
我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!
212020-09-11 -
春去_秋来
提问者
2020-09-11
那不是char没作用了?
112020-09-11
相似问题