http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html,字符大小为16位,即2字节。 不知怎的,我回想起它的8位,即1字节。为了清除我的疑问,我创建了一个单字符的文本文件" a" 并保存了它。然后我检查了文件的大小,它的1个字节,即8位。我很困惑,是什么大小 性格?如果是2字节,为什么文件大小是1字节,如果是1字节,为什么链接说2个字节?
答案 0 :(得分:31)
Java中的char
是UTF-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个字节转换为单个字符。