红色部分代码 是一个while 循环 条件在循环中 可以进行数次判断直到num=fr.read(buf)的值等于-1 才会停止,也就是 如果fr对象的长度超过char数组 buf 的长度 那么num=fr.read(buf)就会调用一次以上,直到全部读完fr 对象的里的内容 ,而且每循环一次 就会打印一次 结果 ,直到打印完.
蓝色部分代码 因为单独把 int num=fr.read(buf);放一行 没写进while的条件里 那么它就只会调用一次,也就是char数组有多长他就写多长的内容进去,即使fr对象的长度超过buf 它也只能读取buf长度的内容,剩下的内容不会再被读进去 ,并且如果 fr对象有数据 while(num!=-1) 就会一直成立 也就是说 while里面的代码 会一直循环下去, 也就是把 buf里面的内容重复输出无数次! 这显然是不符合编程的 故切记 蓝色代码 不可写! |