黑马程序员技术交流社区

标题: 两个循环的比较 [打印本页]

作者: 学习代码    时间: 2014-3-29 17:57
标题: 两个循环的比较
  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. }
复制代码

谢谢
作者: H-Deka    时间: 2014-3-29 18:06
都一样,第二种看着简洁点,程序就是要就看简洁,小代码实现大功能最好了
作者: zhangbingyuan    时间: 2014-3-29 18:33
本帖最后由 zhangbingyuan 于 2014-3-29 18:44 编辑

其实这两种循环就是两种写法而已。不过,在第一种循环中,如果你能把num定义在if循环中的话,num就会存在于栈内存中,一旦使用完毕,它所占用的系统资源会从栈内存中立刻释放,这样就不会占用系统资源。而目前这两种循环中,它都是定义了一个num对象,然后再给它赋值,那么它就会存在于堆内存中,一旦循环结束后,它就会成为垃圾,这会占用系统资源的。 所以综合考虑,如果第一种循环中的num定义在if的判断条件中会稍微好那么一点点。
修改完第一种循环后,应该是这样:

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

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


作者: 清风木扬    时间: 2014-3-29 18:40
第二种好,
1.第一次每次循环都要生成变量再释放变量浪费资源。
2.第一种循环一次要判断两次(while 一次,if再一次), 第二种只有一次。
作者: ╰青青子佩ˊゝ    时间: 2014-3-29 23:23
当然下面那段更简洁的代码更好啊。要是面试的时候两个人都写了代码且都能实现某项功能,但是只能选一个,面试官肯定会选代码更简洁的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2