A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 nyk 于 2014-10-31 23:15 编辑

以下是一个按字节读入的方法,文件demo.txt的文本是“abcdef”
  1. public static void readFile() throws IOException {
  2.                 FileInputStream fis = new FileInputStream("demo.txt");
  3.                 int ch = 0;
  4.                 ch = fis.read();
  5.                 System.out.println((char)ch);
  6.                 ch = fis.read();
  7.                 System.out.println((char)ch);
  8.                 fis.close();
  9.         }
复制代码
这方法是按字节读取数据的,为什么连读两个字节,却返回两个完整的字符,Java中不是用两个字节来表示一个字符吗?求解

评分

参与人数 1黑马币 +3 收起 理由
杨佳名 + 3

查看全部评分

2 个回复

倒序浏览
因为Java的Unicode是兼容ascii值的,abcd等等是属于ascii值的,ascii值占低四位,高四位以0补充,你读出来的字节已经完全的ascii的值了,然后强转,高四位补零,这样打印出来的就是正常的字符
回复 使用道具 举报
nyk 中级黑马 2014-10-31 23:14:28
藤椅
小鸡捉你 发表于 2014-10-30 20:15
因为Java的Unicode是兼容ascii值的,abcd等等是属于ascii值的,ascii值占低四位,高四位以0补充,你读出来 ...

有道理!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马