字符大小 8 位还是 16 位?

2022-09-03 16:51:13

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


答案 1

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

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

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


答案 2

有一种现代方法可以了解其大小。只需使用 .BYTES

System.out.println(Character.BYTES);

它导致2