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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 学习代码 中级黑马   /  2014-3-29 17:57  /  960 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. class FileReaderDemo2
  3. {
  4.         public static void main(String[] args)throws Exception
  5.         {
  6.                 FileReader fr = new FileReader("demo.java");
  7.                 char[] arr= new char[1024];
  8.                 /*while(true)
  9.                 {
  10.                         int num= fr.read(arr);
  11.                         if(num==-1)
  12.                                 break;
  13.                         else
  14.                                 System.out.println(new String(arr,0,num));
  15.                 }                                                //这两种方式都可以将里面的元素读取出来 ,请问那一种要好点
  16.                 */                                                        //不说代码 长短 其他的还有吗?
  17.                 int num = 0;
  18.                 while((num=fr.read(arr))!=-1)
  19.                 {
  20.                         System.out.println(new String(arr,0,num));
  21.                 }
  22.                
  23.                 fr.close();
  24.                
  25.         }
  26. }
复制代码

谢谢

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

倒序浏览
都一样,第二种看着简洁点,程序就是要就看简洁,小代码实现大功能最好了
回复 使用道具 举报
本帖最后由 zhangbingyuan 于 2014-3-29 18:44 编辑

其实这两种循环就是两种写法而已。不过,在第一种循环中,如果你能把num定义在if循环中的话,num就会存在于栈内存中,一旦使用完毕,它所占用的系统资源会从栈内存中立刻释放,这样就不会占用系统资源。而目前这两种循环中,它都是定义了一个num对象,然后再给它赋值,那么它就会存在于堆内存中,一旦循环结束后,它就会成为垃圾,这会占用系统资源的。 所以综合考虑,如果第一种循环中的num定义在if的判断条件中会稍微好那么一点点。
修改完第一种循环后,应该是这样:
  • while(true)
  • {
  •       if( (int num= fr.read(arr) )==-1)
  •              break;
  •      else
  •             System.out.println(new String(arr,0,num));
  • }

当然java有自动垃圾回收机制,我的建议只是针对这两个循环而言的。

   恩, 就是这样的一点差别了,我觉得。希望可以帮到你。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
第二种好,
1.第一次每次循环都要生成变量再释放变量浪费资源。
2.第一种循环一次要判断两次(while 一次,if再一次), 第二种只有一次。
回复 使用道具 举报
当然下面那段更简洁的代码更好啊。要是面试的时候两个人都写了代码且都能实现某项功能,但是只能选一个,面试官肯定会选代码更简洁的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马