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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qmlovewhr 中级黑马   /  2013-7-11 20:25  /  931 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-12 17:46 编辑

import java.io.*;
class FileReaderDemo2
{
public static void main(String[] args)
{
  FileReader fr=new FileReader("demo.txt");
  //定义一个字符数组,用于存储读到字符。
  //该read(char[])返回的是读到字符个数。
  char[]buf=new char[1024];
  int num=0;
  while((num=fr.read(buf))!=-1)
  {
   System.out.println(new String(buf,0,num));
  }
  fr.close();
}
}
看完这段程序后,帮我看一句代码 while((num=fr.read(buf))!=-1),括号内的小括号不是一个赋值运算吗,小括号外大括号内不是一个在判断值吗,看内容意思应该是如果num!=-1;就继续循环,可是我有点不解,赋值后怎么去判断,系统怎么处理的?

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

3 个回复

倒序浏览
如果流读到末尾就回返回-1,如果没有到末尾就循环!
回复 使用道具 举报
看到while循环,需要做的是判断while((num=fr.read(buf))!=-1)括号内的内容是否为真,那系统会先执行带括号的也就是(num=fr.read(buf)),就是查看读取流的值
如果流读到末尾就回返回-1,自然num就为-1,如果没有到末尾就返回其他值,这个可以从JDK中查询。执行完括号后,系统会执行num != -1,判断此表达式是否为真,为真的情况就是num 不是-1,若num==-1,那么此句就成了   -1 != -1,这个表达式就为假,直接跳出while循环了,不再执行{  }里面的内容。希望对您有帮助。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
liye20110 发表于 2013-7-11 21:09
看到while循环,需要做的是判断while((num=fr.read(buf))!=-1)括号内的内容是否为真,那系统会先执行带括号 ...

里面还牵扯到读取流的问题,原来如此,明白了,谢谢哈!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马