黑马程序员技术交流社区

标题: 各位师兄师姐看下这个基础,我有点疑惑. [打印本页]

作者: 麦子守望星空    时间: 2016-6-18 11:41
标题: 各位师兄师姐看下这个基础,我有点疑惑.
这是我在敲循环之求和思想时有点想不明白的地方.如:
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还有值呢,不是被释放了吗?
   谢谢各位帮忙解释下.
作者: zhoubinjian    时间: 2016-6-18 12:04
麦子守望星空 发表于 2016-6-18 11:41
这是我在敲循环之求和思想时有点想不明白的地方.如:
class XunHuan {
       public static void main (Str ...

sum定义在for里面,为局部变量,值存在栈内存,for循环结束后,变量跟它的值都会释放,如果sum定义在成员变量位置,它的值是存在堆内存的,for循环后,值还在
作者: 麦子守望星空    时间: 2016-6-18 12:18
zhoubinjian 发表于 2016-6-18 12:04
sum定义在for里面,为局部变量,值存在栈内存,for循环结束后,变量跟它的值都会释放,如果sum定义在成员 ...

恩恩,谢谢了,了解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2