代码之家  ›  专栏  ›  技术社区  ›  Piyush

如果所有Java字符串都是UTF-16字符串,那么char数据类型的最大大小如何为2?

  •  0
  • Piyush  · 技术社区  · 8 年前

    如果Java中的字符串是UTF-16,则UTF-16字符的大小可能为4字节。 因此,1个UTF-16字符必须映射为2个字符。

    这意味着String长度可能小于等效的char[]长度。

    但事实并非如此。

    Character x = new Character((char) 7000);
    String s = new String(""+x+x+x);
    
    byte [] ar =  s.getBytes();
    char [] arr =  s.toCharArray();
    

    字节数组的长度为9。
    char数组的长度为3。

    所以我认为java中的char可能大于2个字节,这取决于需求是否正确。

    如果是这样,那么java中char的最大大小是多少?或者它是可变长度的,将来可能会达到无穷大?

    1 回复  |  直到 8 年前
        1
  •  5
  •   Remy Lebeau    8 年前

    这个 String.getBytes() (char)7000 (Unicode码位 U+1B58 BALINESE DIGIT EIGHT )为3字节- E1 AD 98 因此,您的9字节为3个字符。