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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 自由自在2014 中级黑马   /  2014-2-15 21:08  /  1130 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的吗?
           }

评分

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

查看全部评分

4 个回复

倒序浏览
fileToList(dir,list);  // 局部变量改变
上面传入的是引用数据类型,就相当于传数组那种,值是会改变的。

评分

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

查看全部评分

回复 使用道具 举报
楼主你把list集合通过参数传递过去了, fileToList方法拿到list集合的引用,然后给list集合添加元素,所以list的长度变化了,简单点说 : fileToList方法操作的集合就是主函数那个

评分

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

查看全部评分

回复 使用道具 举报
程澄 发表于 2014-2-15 21:48
fileToList(dir,list);  // 局部变量改变
上面传入的是引用数据类型,就相当于传数组那种,值是会改变的。 ...

谢谢,我明白了
回复 使用道具 举报
panzhenglian 发表于 2014-2-15 21:48
楼主你把list集合通过参数传递过去了, fileToList方法拿到list集合的引用,然后给list集合添加元素,所以list ...

谢谢,我明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马