黑马程序员技术交流社区

标题: 毕向东视频 创建Java文件列表疑问 [打印本页]

作者: 自由自在2014    时间: 2014-2-15 21:08
标题: 毕向东视频 创建Java文件列表疑问
import java.util.*;
import java.io.*;
public class Text{
        public static void fileToList(File dir,List<File> list){
                File[] files=dir.listFiles();
                for(File file:files){
                        if(file.isDirectory())
                                fileToList(file,list);
                        else{
                                        if(file.getName().endsWith(".java"))
                                                list.add(file);
                                }
                        }
                }
               
       
        public static void main(String[] args)  {
  
       File dir=new File("D:\\sub\\workspace\\exam");
       List<File> list=new ArrayList<File>();
       fileToList(dir,list);  // 局部变量改变
       System.out.println(list.size());//输出结果为8  局部变量改变为什么会影响全局呢?这里的输出结果不应该为0的吗?
           }
作者: 程澄    时间: 2014-2-15 21:48
fileToList(dir,list);  // 局部变量改变
上面传入的是引用数据类型,就相当于传数组那种,值是会改变的。
作者: panzhenglian    时间: 2014-2-15 21:48
楼主你把list集合通过参数传递过去了, fileToList方法拿到list集合的引用,然后给list集合添加元素,所以list的长度变化了,简单点说 : fileToList方法操作的集合就是主函数那个
作者: 自由自在2014    时间: 2014-2-16 13:42
程澄 发表于 2014-2-15 21:48
fileToList(dir,list);  // 局部变量改变
上面传入的是引用数据类型,就相当于传数组那种,值是会改变的。 ...

谢谢,我明白了
作者: 自由自在2014    时间: 2014-2-16 13:46
panzhenglian 发表于 2014-2-15 21:48
楼主你把list集合通过参数传递过去了, fileToList方法拿到list集合的引用,然后给list集合添加元素,所以list ...

谢谢,我明白了




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