黑马程序员技术交流社区
标题:
急,求大神
[打印本页]
作者:
GYSWL
时间:
2014-12-11 22:03
标题:
急,求大神
public class TransDemo
{
public static void main(String[] args) {
int i,j;
//int j;
outer: for (i = 1; i < 3; i++) {
inner: for(j = 1; j < 3; j++) {
}
}
System.out.println(j+" "+i);
}}
复制代码
为什么最后打印加去j可以打印,加了j就报错
作者:
Honelyboy
时间:
2014-12-11 22:14
你把int j;注释了,内嵌for里面的j只是个局部变量。所以会报错。
作者:
農邨尛夥兒
时间:
2014-12-11 22:16
JVM在编译时会考虑到for循环可能进不去 有几率造成j没有赋值 SOP的时候调用一个未赋值的变量
作者:
史云龙
时间:
2014-12-11 22:19
j没有被初始化。或者说内层循环中对j的初始化的作用没有作用到输出语句。
和下面的情况一样。
for(int i=0;i<10;i++){
int j=0;
}
System.out.println(j);
作者:
V字仇杀
时间:
2014-12-11 22:22
没有了j的局部变量。在for循环内的j只是在for里面可用。跳出for循环直接当垃圾释放了,后面当然读不到了。jvm虚拟机就会报错。
作者:
yibo924
时间:
2014-12-11 22:53
int i,j;的作用域是整个主函数,在这个范围内又定义一次 j,就会报错。就如同真假孙悟空同时出现,当然天下大乱
作者:
innovator
时间:
2016-5-17 13:35
局部变量必须初始化才可以。在for循环外初始化就没事了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2