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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这是我在敲循环之求和思想时有点想不明白的地方.如:
class XunHuan {
       public static void main (String[] args) {
       int sum = 0;
       for(int i = 1;i<=10;i++) {
           sum = sum +i;
        }
           System.out.println(sum);
    }
}
我知道求和正确的写法就是上面那个,但是有天我突然把定义sum写在了循环中,如:
for(int i = 1;i<=10;i++) {
   int sum = 0;
   sum = sum+i;
}
   System.out.println(sum);这样写时它会显示没有定义sum.我知道那是因为for循环结束后,释放了sum和i,我想知道它只是释放了数据类型还是值都释放了.比如我们在for循环上定义sum=0.循环完后,为啥sum还有值呢,不是被释放了吗?
   谢谢各位帮忙解释下.

2 个回复

倒序浏览
zhoubinjian 来自手机 金牌黑马 2016-6-18 12:04:31
沙发
麦子守望星空 发表于 2016-6-18 11:41
这是我在敲循环之求和思想时有点想不明白的地方.如:
class XunHuan {
       public static void main (Str ...

sum定义在for里面,为局部变量,值存在栈内存,for循环结束后,变量跟它的值都会释放,如果sum定义在成员变量位置,它的值是存在堆内存的,for循环后,值还在
回复 使用道具 举报 1 0
zhoubinjian 发表于 2016-6-18 12:04
sum定义在for里面,为局部变量,值存在栈内存,for循环结束后,变量跟它的值都会释放,如果sum定义在成员 ...

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