字符大小为8位还是16位?

时间:2014-06-07 08:07:22

标签: java char byte

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html,字符大小为16位,即2字节。 不知怎的,我回想起它的8位,即1字节。为了清除我的疑问,我创建了一个单字符的文本文件" a" 并保存了它。然后我检查了文件的大小,它的1个字节,即8位。我很困惑,是什么大小 性格?如果是2字节,为什么文件大小是1字节,如果是1字节,为什么链接说2个字节?

4 个答案:

答案 0 :(得分:31)

Java中的charUTF-16代码单元。它不一定是完整的Unicode字符,但它实际上是无符号的16位整数。

当您将文本写入文件(或以其他方式将其转换为字节序列)时,数据将取决于您使用的编码。例如,如果您使用ASCII或ISO-8859-1,那么您可以编写哪些字符非常有限,但每个字符只能是一个字节。如果使用UTF-16,那么每个Java char将被转换为恰好两个字节 - 但是一些Unicode字符可能需要四个字节(由两个Java char值表示)。

如果使用UTF-8,那么编码形式中的单个Java char的长度将取决于值。

答案 1 :(得分:4)

有一种当代的方法来了解其大小。只需使用BYTES进行打印。

System.out.println(Character.BYTES);

结果为2

答案 2 :(得分:0)

请注意,文本文件确实具有与之关联的格式/字符集。文本文件通常以UTF-8格式保存,每个字符8位,除非字符是“特殊”。

答案 3 :(得分:0)

Java中的char大2字节(如有效值范围所示)。但它并不一定意味着角色的每个表示都是2个字节长。例如,许多编码只为每个字符保留1个字节(或者对于最常用的字符使用1个字节)。如果平台默认编码是1字节编码,例如ISO-8859-1或可变长度编码,则作为UTF-8,它可以轻松地将该1个字节转换为单个字符。