栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
含有
Unipre
替换字符代替)。

这就是为什么你不应该依赖平台默认编码的原因之一:在

byte[]
char[]/ String
或之间
InputStream
以及和Reader或之间
OutputStream
以及和之间进行转换时
Writer
,应始终指定要使用的编码。如果你不这样做,那么你的代码将取决于平台。

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号