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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴刚 中级黑马   /  2012-9-17 14:19  /  1217 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴刚 于 2012-9-17 14:23 编辑
  1. import java.io.*;

  2. public class TestReader
  3. {
  4.         public static void main(String args[])
  5.         {
  6.                 FileReader fr = new FileReader("大家自己写路径");
  7.                 int ch = fr.read();
  8.                 while(-1 != ch)
  9.                 {
  10.                         System.out.printf("%c", ch);
  11.                         ch = fr.read();
  12.                 }
  13.                
  14.                 fr.close();
  15.         }
  16. }
复制代码
想请问一下代码中的read方法的返回值是int类型的数据,还有就是返回的int数据是字符串的unicode编码还是1,0,1,0的二进制数据?字符读取是一个字符字符读取的,那么返回的是字符的整数表示形式吗?如果是的话,那字符是两个字节,为什么不用short。。。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 新人提问 多多支持

查看全部评分

4 个回复

倒序浏览
read()方法,所读取的是单个字符, 当返回值是-1的时候,表示此时流已经读到末尾,没有可读了的!返回值是int 本人理解可能是自动提升了吧??同样求解...
回复 使用道具 举报
本帖最后由 程金 于 2012-9-17 17:05 编辑

想请问一下代码中的read方法的返回值是int类型的数据,还有就是返回的int数据是字符串的unicode编码还是1,0,1,0的二进制数据?字符读取是一个字符字符读取的,那么返回的是字符的整数表示形式吗?如果是的话,那字符是两个字节,为什么不用short。。。
________________
unicode编码在计算机中还是一个二进制数据,表示任何东西在计算机中都是二进制数据
字符流的read()方法返回单个字符,也就是表示这个字符的unicode编码值的二进制数据;字节流的read的方法返回的是一个字节, 然后被转换成一个int数据,为了是能用-1来表示流末尾
char的取值范围是从0到65535,这个范围内的所有字符, 都有可能在数据中出现,short也是两个字节显然没有多余的数来表示流末尾, 而且有符号的short数取值是-32,768到32,767 无法表示char的unicode编码,我们需要使用一个不可能在数据中出现的值来表示流末尾
   那么Java中就是用-1来表示这个末尾的, 因为-1不会在数据中 出现而为了返回-1, 那么只能用int
当流中读取到一个字符时, read()方法内部就会当作int返回, 如果读到流末尾, 直接返回-1

read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数
  这时就可以用-1表示流末尾了
  而改变后的数据只要强转回byte, 就可以得到原有数据

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
java中默认的返回值类型是 int   int的范围比short要大  其实用short也是可以的  只要不超出范围  
就像你用给你两个盒子  一个中等盒子  一个小盒子 你都可以用  不过默认是中等盒子 用想小盒子的话  需要实现打个招呼

360截图20120917172752718.jpg (56.73 KB, 下载次数: 19)

360截图20120917172752718.jpg
回复 使用道具 举报
谢谢楼上的几位朋友、、、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马