首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java如何有效地存储4字节字符数组

java如何有效地存储4字节字符数组
EN

Stack Overflow用户
提问于 2019-08-21 17:54:14
回答 1查看 165关注 0票数 0

请帮助我理解java是如何存储字符串和字符数组的。在java中,Character.SIZE返回16,堆栈溢出和web上的大多数答案都表明java中的字符是16位的(显然,因为它内部使用了UTF-16 ),但是UTF-16不能将所有内容都放在2个字节中。例如中文。

代码语言:javascript
复制
char c = '的';
System.out.println(Arrays.toString(Character.toString(c).getBytes(StandardCharsets.UTF_16)));

这段代码打印[-2, -1, 118, -124],这意味着一个字符有4字节长。这是否意味着java中由char[]数组组成的字符串,每个字符占用4个字节。这会占用太多的空间,所以我假设不会发生这种情况。一定是char具有可变长度。如果是这样的话,如果不首先指定每个字符的长度,就不可能将char[]作为一个很长的字节列表存储在ram中。这也会占用太多的空间。

那么在Java中,char的实际大小是多少?如果它的长度是可变的,那么它是如何存储在ram中的?

EN

回答 1

Stack Overflow用户

发布于 2019-08-21 18:23:20

您使用的字符是一个2字节字符。

编码字节数组中的前两个字节是UTF-16 byte order mark

实际的4字节unicode码位将表示为两个字符。

代码语言:javascript
复制
final char[] chars = Character.toChars(0x2070E);
System.out.println(chars.length);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57588983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档