您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java中字符的大小不是2字节吗?

Java中字符的大小不是2字节吗?

A char表示Java (*)中的字符。它长2个字节(至少这是有效值范围所建议的大小)。

这并不一定意味着一个字符的每个表示都长2个字节。实际上,许多编码只为每个字符保留1个字节(或为最常见的字符使用1个字节)。

调用String(byte[])构造函数你问的Java的转换byte[]String使用平台的认编码。由于平台认编码通常是1字节编码(例如ISO-8859-1)或可变长度编码(例如UTF-8),因此它可以轻松地将1字节转换为单个字符。

如果你在使用UTF-16(或UTF-32或UCS-2或UCS-4或…)作为平台认编码的平台上运行该代码,则将不会得到有效的结果(你会得到一个String含有Unicode替换字符代替)。

这就是为什么你不应该依赖平台认编码的原因之一:在byte[]char[]/ String或之间InputStream以及和Reader或之间OutputStream以及和之间进行转换时Writer,应始终指定要使用的编码。如果你不这样做,那么你的代码将取决于平台。

(*)并非完全正确:a char代表UTF-16代码点。任一个或2 UTF-16的码点代表一个Unicode码点。Unicode代码点通常代表一个字符,但有时使用多个Unicode代码点来组成一个字符。但是上面的近似值足够接近讨论当前的话题。

java 2022/1/1 18:13:38 有611人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶