黑马程序员技术交流社区

标题: String(arr,0,num)里的0和num分别起到了什么作用 [打印本页]

作者: 赵志伟    时间: 2012-3-13 09:51
标题: String(arr,0,num)里的0和num分别起到了什么作用
public static void main(String[] args) throws IOException
        {
                // TODO Auto-generated method stub
                FileReader fr=new FileReader("demo.txt");
                char[] arr=new char[1024];
               
                int num=0;
                while((num=fr.read(arr))!=-1){
                        System.out.println(new String(arr,0,num));
                }
                fr.close();
        }
作者: 王国华    时间: 2012-3-13 09:54
本帖最后由 王国华 于 2012-3-14 08:45 编辑

0是角标,num是读到字符数组的长度
作者: 张希强    时间: 2012-3-13 09:55
0和num的作用是表示开始和结束的位置。
fr.read(arr)在读取结束时返回的才是-1,其他时候返回的是当前字符数组的元素位置。
作者: 段浩亮    时间: 2012-3-13 11:28
char[] arr=new char[1024];
System.out.println(new String(arr,0,num));
String(arr,0,num)的作用是把arr数组中从0开始,num个字符变成字符数组
这样写的目的是当读到文件末尾时数组可能存不满 就没必要把后面的空字符也变成字符串打印出来  就是里面存多少打印出多少
作者: 肖岑锋    时间: 2012-3-13 12:58
在读取文件结束的时候,可能出现并没有1024字符的数据。为了节省空间,使用string[arr,0,aum]可以只读取字符数组中从0开始的aum字符,并不读取后面空余的空字符。
作者: 王思兰    时间: 2012-3-13 13:19
0表示开始的位置,角标,num表示长度
作者: 魏昂    时间: 2012-3-13 14:14
我也学会了 谢谢哦
作者: 未济64    时间: 2012-3-13 15:48
new String(arr),这里的是为了把字符数组转成字符串打印出来,因为有可能这种情况,假如你的读入 数据只有几个或者几十个,如果用new String(arr)的话,会把1024个字符全转成了字符串,包括空格,全部打印出来了,num是记录字符数组的个数的,所以只要把0到num个字符转成字符串打印即可,提高了效率。




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