我是靠谱客的博主 激情小土豆,最近开发中收集的这篇文章主要介绍java中嵌套循环的作用域问题_Java语言循环嵌套中变量的作用域总结思考。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今日在做JAVA中的循环练习的时候,突然发现自己对变量的作用域很是模糊,所以做了下列总结。

引入问题:生成一个四行任意列的星星

例: 生成一个四行五列的星星

*****

*****

*****

*****

两个程序如下:

// ===========test1-1System.out.println("请输入一个数===test1-1");

Scanner scan = new Scanner(System.in);

int num = scan.nextInt();

int i = 0;

int f = 0;

while (i < 4) {

while (f < num) {

System.out.print("*");

f++;

}

System.out.println();

i++;

}

对于test1-1中变量的作用范围的理解:变量num,i,f相对于整个程序块来说都是属于全局变量,所以在初始化一次之后,直到整个程序停止运行并且再重新运行一次的时候,这三个变量才会重新初始化一次。因此,在内层while完成整一周循环之后变量f==num,所以此时将退出内层循环。在输出一个换行符并且i++之后,并且判断完循环条件之后再继续执行内部的while循环,此时却发现f

// ===========test1-2

System.out.println("请输入一个数===test1-2");

Scanner w = new Scanner(System.in);

int num1 = w.nextInt();

int i1 = 0;

while (i1 < 4) {

int f1 = 0;

while (f1 < num1) {

System.out.print("*");

f1++;

}

System.out.println();

i1++;

}=========(标记1)

对于程序test1-2的理解:此程序能够正确输出四行任意列的星号图,他与上一个程序的区别就是将变量f1定义的地方改变了,变量定义的地方放在了while循环内部,这样他的作用域就是从他定义的地方开始,一直到(标记1)结束,当这个变量作用范围内的while循环(即内部循环)结束之后,JVM就会自动回收这个变量f1,当继续执行外部while循环时程序会自上往下重新执行语句块,重新初始化这个变量f1,此时他的初始值为0,将满足循环条件,就可以产生正确的四行星星。如果像第一个程序块那样把变量放在外面,那么在重新执行内层循环的时候将不会使这个变量初始化,直接就不会满足内层循环的条件,只出来一行的星星。

注:一个变量的作用域就是从声明这个变流量的地方开始,到包含这个变量的花括号为止。离开作用域,变量所分配的内存空间将会被JVM回收,此时就可以进行这个变量的重复命名,并可以进行重新使用。什么时候算是离开这个作用域,当这个程序块执行完成之后,比如说循环判断条件不满足了,就会自动退出这个程序。

//用while完成

计算 ======1+(1+2)+(1+2+3)+(1+2+3+4)=?

//===分析得出每一组的组数group和这一组最后一个数num相同int group=1;//定义组数,组数从1开始,方便组内的计算。

int sum=0;//定义总和变量,将所有的组加起来之后的和

while (group<5)

{

int m=0;//====重点部位====

int num=1;

while (num<=group)

{

m=m+num;//m的初始值为0,num从1开始循环,一直循环加到当前的group的值。

num++;

}

sum=sum+m;

group++;

}System.out.println(sum);

分析:在这个程序中,我犯得错是将变量m定义在了外边,作为一个全局变量来使用了。当m定义为一个全局变量的时候(即是定义在外边),在内部的while循环中每一次执行m=m+num运算的时候,变量m的初始值都不为0,所以,算出来的每一组的值都会比正确的大前边所有组数的和。

总结:对于那些需要经常初始化为0的变量应当格外的注意到底是要放在哪里,是要设置为一个全局变量还是一个局部变量。

我觉得一般是设置为一个局部变量。一定要谨慎!!!

最后

以上就是激情小土豆为你收集整理的java中嵌套循环的作用域问题_Java语言循环嵌套中变量的作用域总结思考。的全部内容,希望文章能够帮你解决java中嵌套循环的作用域问题_Java语言循环嵌套中变量的作用域总结思考。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部