请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师 有char Character 为啥还要String?

正在回答

2回答

张勤一 2020-09-11 11:25:19

春去秋来你好:

    我们先来说一说 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 13:06:50
提问者 春去_秋来 2020-09-11 11:30:14

那不是char没作用了?

1 回复 有任何疑惑可以回复我~
  • 不要这样去看待 char,很少会被使用与没有用也是两码事呀。思考下,如果你只存储一个字符,char 是不是会比 String 节省很多空间呢?这对于高效率、需要节省内存的应用或工程来说,是肯定需要考虑的。例如很多 RPC 框架内部都大量使用了 char。
    只是说,我们日常的业务场景中,String 基本上足够了,char 的话,用处就显得很小了。
    回复 有任何疑惑可以回复我~ 2020-09-11 11:41:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信