Java 的 char 类型就是使用二字节长度的 Unicode 码作为底层存储,这句话对吗

2020-02-10 17:07:19 +08:00
 amiwrong123

因为 Unicode 的范围是 0x0000 至 0x10FFFF,但 char 只有两个字节,所以 java 的 char 类型只使用的 Unicode 的 0x0000 至 0xFFFF 范围吗?

2522 次点击
所在节点    Java
6 条回复
est
2020-02-10 17:15:15 +08:00
surrogate pair 了解一下。 -XX:+UseCompressedStrings 了解一下
amiwrong123
2020-02-10 17:25:16 +08:00
@est
这个 surrogate pair 是 utf-16 里的东西,所以也有可能两个 char 代表一个字符的呗。

UseCompressedStrings 百度了下,它就是让 jvm 认为每个字符都是 ascii,也都是单字节的呗。
zhuge415
2020-02-10 18:06:30 +08:00
超过范围的,编译就会报错
kx5d62Jn1J9MjoXP
2020-02-10 18:33:58 +08:00

char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive).

超出范围的无法用 char 表示, 只能用 String
palmers
2020-02-10 21:26:06 +08:00
spadger
2020-02-11 09:17:57 +08:00
看起来还是用 utf8 比较好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/643510

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX