java中关于递归的一些总结
2012-11-13 11:39
483 查看
说是总结,不如说是笔记。今天在使用File的时候发现的。
public static void list(File file){
if(file.isDirectory())
{
File list[]=file.listFiles(); //不会被覆盖吗????????????
for(int i=0;i<list.length;i++)
list(list[i]);
}
System.out.println(file);
}
上面是一个关于遍历一个File对象的递归函数。当初学的时候很是奇怪,每次调用list(File file)方法的时候,方法里面的list数组不会被覆盖吗?今天在看来这个问题实在是简单。
1.递归调用每次进入的时候list数组对象都是不同的,每一次递归的时候都是调用一次list(File file)方法,所以每一次调用都会建立一个list数组对象,所有不会覆盖,并且list对象是局部变量,所以可以同名。
2.如果把list数组对象声明为成员变量,那么每一次递归的时候都共享这个数组,也就是会覆盖了。
3.知识是一个聚沙成塔的过程,当初知识积累不足,造成了这个简单的逻辑都搞不清楚,所以要经常的回头看看自己以前不明白的地方
public static void list(File file){
if(file.isDirectory())
{
File list[]=file.listFiles(); //不会被覆盖吗????????????
for(int i=0;i<list.length;i++)
list(list[i]);
}
System.out.println(file);
}
上面是一个关于遍历一个File对象的递归函数。当初学的时候很是奇怪,每次调用list(File file)方法的时候,方法里面的list数组不会被覆盖吗?今天在看来这个问题实在是简单。
1.递归调用每次进入的时候list数组对象都是不同的,每一次递归的时候都是调用一次list(File file)方法,所以每一次调用都会建立一个list数组对象,所有不会覆盖,并且list对象是局部变量,所以可以同名。
2.如果把list数组对象声明为成员变量,那么每一次递归的时候都共享这个数组,也就是会覆盖了。
3.知识是一个聚沙成塔的过程,当初知识积累不足,造成了这个简单的逻辑都搞不清楚,所以要经常的回头看看自己以前不明白的地方
相关文章推荐
- Java中关于同步,异步,多线程,多线程同步,并发,并行的一些总结
- 关于Java中的继承与访问修饰符的一些总结
- 关于近期selenium+java的一些总结
- 关于Java对相对目录的文件读写和调用方法的一些总结
- 关于JAVA和C++的一些总结
- 关于java初学的一些笔记总结(收集+总结)与大家分享,关于自学java,有好的建议可以回帖。
- java关于内部类的一些总结
- Java 关于对时间操作的一些总结
- java关于日期的一些常用方法总结
- 关于递归思想与prolog中的一些递归应用总结
- 原!!关于java 单元测试Junit4和Mock的一些总结
- 关于java中sort的一些总结
- 关于java初学的一些笔记总结(收集+总结)与大家分享,关于自学java,有好的建议可以回帖。
- 关于java构造器的一些总结
- 关于Java基础的一些笔试题总结
- 关于java乱码的一些总结
- 关于java对象内存的一些总结
- 一些关于Java面向对象学习、培训机构培训、大学生活状态的感悟和总结
- 关于java乱码的一些总结
- 关于Java中equal函数和==的一些区别做一个总结,以供自己随时查看复习。