黑马程序员技术交流社区
标题:
两个循环的比较
[打印本页]
作者:
学习代码
时间:
2014-3-29 17:57
标题:
两个循环的比较
import java.io.*;
class FileReaderDemo2
{
public static void main(String[] args)throws Exception
{
FileReader fr = new FileReader("demo.java");
char[] arr= new char[1024];
/*while(true)
{
int num= fr.read(arr);
if(num==-1)
break;
else
System.out.println(new String(arr,0,num));
} //这两种方式都可以将里面的元素读取出来 ,请问那一种要好点
*/ //不说代码 长短 其他的还有吗?
int num = 0;
while((num=fr.read(arr))!=-1)
{
System.out.println(new String(arr,0,num));
}
fr.close();
}
}
复制代码
谢谢
作者:
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的判断条件中会稍微好那么一点点。
修改完第一种循环后,应该是这样:
while(true)
{
if( (int num= fr.read(arr) )==-1)
break;
else
System.out.println(new String(arr,0,num));
}
当然java有自动垃圾回收机制,我的建议只是针对这两个循环而言的。
恩, 就是这样的一点差别了,我觉得。希望可以帮到你。
作者:
清风木扬
时间:
2014-3-29 18:40
第二种好,
1.第一次每次循环都要生成变量再释放变量浪费资源。
2.第一种循环一次要判断两次(while 一次,if再一次), 第二种只有一次。
作者:
╰青青子佩ˊゝ
时间:
2014-3-29 23:23
当然下面那段更简洁的代码更好啊。要是面试的时候两个人都写了代码且都能实现某项功能,但是只能选一个,面试官肯定会选代码更简洁的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2