V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amiwrong123
V2EX  ›  Java

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

  •  
  •   amiwrong123 · 2020-02-10 17:07:19 +08:00 · 2522 次点击
    这是一个创建于 1783 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    6 条回复    2020-02-11 09:17:57 +08:00
    est
        1
    est  
       2020-02-10 17:15:15 +08:00
    surrogate pair 了解一下。 -XX:+UseCompressedStrings 了解一下
    amiwrong123
        2
    amiwrong123  
    OP
       2020-02-10 17:25:16 +08:00
    @est
    这个 surrogate pair 是 utf-16 里的东西,所以也有可能两个 char 代表一个字符的呗。

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

    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
        5
    palmers  
       2020-02-10 21:26:06 +08:00   ❤️ 1
    spadger
        6
    spadger  
       2020-02-11 09:17:57 +08:00
    看起来还是用 utf8 比较好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2642 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:16 · PVG 23:16 · LAX 07:16 · JFK 10:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.