黑马程序员技术交流社区
标题:
JavaIO中每次读一个字节,为什么会输出完整的字符?
[打印本页]
作者:
nyk
时间:
2014-10-30 18:21
标题:
JavaIO中每次读一个字节,为什么会输出完整的字符?
本帖最后由 nyk 于 2014-10-31 23:15 编辑
以下是一个按字节读入的方法,文件demo.txt的文本是“abcdef”
public static void readFile() throws IOException {
FileInputStream fis = new FileInputStream("demo.txt");
int ch = 0;
ch = fis.read();
System.out.println((char)ch);
ch = fis.read();
System.out.println((char)ch);
fis.close();
}
复制代码
这方法是按字节读取数据的,为什么连读两个字节,却返回两个完整的字符,Java中不是用两个字节来表示一个字符吗?求解
作者:
小鸡捉你
时间:
2014-10-30 20:15
因为Java的Unicode是兼容ascii值的,abcd等等是属于ascii值的,ascii值占低四位,高四位以0补充,你读出来的字节已经完全的ascii的值了,然后强转,高四位补零,这样打印出来的就是正常的字符
作者:
nyk
时间:
2014-10-31 23:14
小鸡捉你 发表于 2014-10-30 20:15
因为Java的Unicode是兼容ascii值的,abcd等等是属于ascii值的,ascii值占低四位,高四位以0补充,你读出来 ...
有道理!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2