在Java中,字符长度为2个字节,但是当我使用bytebuffer将字符串写入文件时,filechannel位置会增加字符数。我读过Filechannel.position()方法返回从文件开头到当前位置的字节数,所以它会增加2 *个字符数??
答案 0 :(得分:1)
在Java中,字符长度为2个字节
JVM内部。当写出时,它们可以是1-4个字节长,具体取决于字符集。
但是当我将一个字符串写入文件时 使用bytebuffer的filechannel 位置增加数量 字符。
不,它增加了字节数。
我读到了Filechannel.position() 方法返回字节数 从文件的开头到 当前的位置如此羞涩 增加2 *个字符数?
没有。你的问题基于两个谬论。
答案 1 :(得分:-1)
不完全。在Java中,char
类型是byte
类型的位宽的两倍,但这仅表示字符可以两个字节长。它取决于你的String的字符编码,但是使用UTF-8编码(默认值),chars被编码为0到127之间的字符只有一个字节,但是在这个范围内的字符多个字节(当设置高位时,它表示下一个字节也是当前char的一部分
对于仅由0-127个字符组成的字符串(即“普通文本”),字节长度将等于字符长度。
如果您的String包含0-127范围之外的字符,则字节长度将大于字符数。