
因为 Unicode 的范围是 0x0000 至 0x10FFFF,但 char 只有两个字节,所以 java 的 char 类型只使用的 Unicode 的 0x0000 至 0xFFFF 范围吗?
1 est 2020-02-10 17:15:15 +08:00 surrogate pair 了解一下。 -XX:+UseCompressedStrings 了解一下 |
2 amiwrong123 OP @est 这个 surrogate pair 是 utf-16 里的东西,所以也有可能两个 char 代表一个字符的呗。 UseCompressedStrings 百度了下,它就是让 jvm 认为每个字符都是 ascii,也都是单字节的呗。 |
3 zhuge415 2020-02-10 18:06:30 +08:00 超过范围的,编译就会报错 |
4 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 |
5 palmers 2020-02-10 21:26:06 +08:00 |
6 spadger 2020-02-11 09:17:57 +08:00 看起来还是用 utf8 比较好。 |