JAVA,关于for循环,循环体里的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA,关于for循环,循环体里的问题相关的知识,希望对你有一定的参考价值。

for (int i = 0; i < 5; i++)
int a = 4;

是每一次循环都新建局部变量a,还是第一次新建a,后面只是给a赋值?? 求详解
如果是每次都新建,那每一次循环的局部变量a在下一次循环之前都被系统回收了吗??

楼主的想法没有错。在for循环内定义变量,该变量属于局部变量,他的有效作用域只能在for循环的花括号内。从“{”开始,到“}”结束,因此每次开始循环变量a被创建和赋值。但当当次的循环结束准备开始下一次循环时,变量a在内存中就会被销毁。因此楼主的for循环内的变量a一直处于“被创建赋值”-->“被销毁--->“再创建赋值”--->"再销毁"。。。。的循环中。

楼主可以简单做个试验。
for (int i = 0; i < 5; i++)
int a = 4;

System.out.println(a); //这句将会报错,会显示找不到变量a的信息。因为上面for循环的a离 开for 循环的花括号后会被销毁
参考技术A a是循环体内的局部变量,每次循环都会新建a,下一次循环之前a会被系统回收。 参考技术B 每次都新建,至于下一次循环之前会不会回收是不确定的 参考技术C 循环每次都会新声明一个局部变量a,然后将4赋值给a 参考技术D 第一次新建a,后面只是给a赋值 就这样。

linux shell for循环解决递归循环目录结构

今天总结一下关于linux shell里的递归循环的问题
起因是一个群友在群里的提问
问的是怎么把有或多或少空目录的几个文件移动走的问题
归根结底就是一个递归循环的问题

如果之前接触过c语言之类的编程语言、那么这个很好理解
就是通过函数来不断的自己调用自己
这种方法有一个很大的弊端就是需要很多资源
比如有一种进程调用的 fork 炸弹 就是自调用搞的

接下来我就贴一下代码然后简单的讲解一下

#!/bin/sh
. /etc/plus.lib
a()
{
    for file  in `ls $1`
    do
        if [ -d $1"/"$file ];then
            a $1"/"$file
        else
            echo $1"/"$file
        fi
    done
}
a /tmp

那么这个就是整个的代码
通过一个大的循环
然后判断是目录还是文件
如果是一个文件的话、就把它echo出来、当然这个脚本没有功能、
如果是想要做一些处理的话、可以自行处理
如果不是一个文件而是一个目录的话、
那就调用自己重新循环一遍当前目录

[email protected]:/tmp/tmp# sh a.sh 
/tmp/a/01
/tmp/a/1/02
/tmp/a/1/asdasf/ashfakjsgba
/tmp/a/aaa
/tmp/b/03
/tmp/tmp/a.sh

就总结这么多,以后有机会再补充

本文出自 “Dashazi's blog” 博客,转载请与作者联系!

以上是关于JAVA,关于for循环,循环体里的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于Java if循环后面没有加括号

js的for in循环和java里的foreach循环的区别

for循环里的数组元素怎么拿出来用

关于java中float的循环增值问题

关于java list循环的问题

linux shell for循环解决递归循环目录结构