老师 有char Character 为啥还要String?

来源:3-2 为啥老用不好日期计算?

春去_秋来

2020-09-11

老师 有char Character 为啥还要String? 有什么用

写回答

2回答

张勤一

2020-09-11

春去秋来你好:

    我们先来说一说 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!共同建造、维护这门课程,我需要每一个你!

   

2
1
春去_秋来
非常感谢!
2020-09-11
共1条回复

春去_秋来

提问者

2020-09-11

那不是char没作用了?

1
1
张勤一
不要这样去看待 char,很少会被使用与没有用也是两码事呀。思考下,如果你只存储一个字符,char 是不是会比 String 节省很多空间呢?这对于高效率、需要节省内存的应用或工程来说,是肯定需要考虑的。例如很多 RPC 框架内部都大量使用了 char。 只是说,我们日常的业务场景中,String 基本上足够了,char 的话,用处就显得很小了。
2020-09-11
共1条回复

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程