日期:2014-05-20  浏览次数:20643 次

JAVA或C的最基本的概念,困惑中……,请指教?
这样的代码:
int   i=0;
while(i <3){
      int   j=1;
      i++;
}


由于循环,那么j是不是被重复定义了三次?还是一次?编译器会报错吗?(我在JDK中编译时没报错),在内存中j是不是占用了三份的内存?

------解决方案--------------------
最终j只有一个值是1,编译不会出错,也不会分配三个内存
------解决方案--------------------
名义上的j被定义了3次,但每次都是一个新的j;
局部变量,出了这个大括号他就失去了意义;
名义上的j是占用了3份内存,但每个占用内存的“j”不是同一个“j”,
出了大括号,系统就收回了内存(虚拟机操作当然是延迟的)
------解决方案--------------------
这是必然的
JAVA的变量的作用域就是大括号为界限.