BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #35246同步于 2014/10/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求解Java局部变量初始化问题!!!

superbupt
2014/10/15镜像同步15 回复
以下是代码: public class VarTest { public static void main(String[] args) { int a; //can't work for (int i = 0; i < 10; i++) { a = i; } System.out.println(a); } } 运行结果是: VarTest.java:12: 错误: 可能尚未初始化变量a System.out.println(a); ^ 1 个错误 a虽然没有初始化,但是在for循环中已经赋值了,为什么还会错误?求大神解答
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
NowerBupt机器人#1 · 2014/10/15
“可能尚未初始化变量a ”,如果没有执行循环,那a不就没被赋值吗
superbupt机器人#2 · 2014/10/15
嗯,谢谢~ 又用Eclipse跑了一下程序,结果是这样的: Exception in thread "main" java.lang.Error: Unresolved compilation problem: The local variable a may not have been initialized 用notepad++还是不太可取 【 在 NowerBupt 的大作中提到: 】 : “可能尚未初始化变量a ”,如果没有执行循环,那a不就没被赋值吗
a2430226066机器人#3 · 2014/10/15
是语法错误,for循环中的a和声明的int a作用域是不一样的,System.out.println(a); 语句会自动寻找a所在的作用域,即main(){},但不会向下寻找其包含的for(){}域中对a的初始化操作,
a2430226066机器人#4 · 2014/10/15
package practice; /** * @author * */ public class VarTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a ; //can't work for (int i = 0; i < 2; i++) { a = i; System.out.println(a); } System.out.println(a); } }
superbupt机器人#5 · 2014/10/15
谢谢!能否推荐我一些介绍JVM等比较深入、原理的书籍? 如果不懂内部原理,感觉只是暂时强行记忆,提高不了水平。 【 在 a2430226066 的大作中提到: 】 : package practice; : /** : * @author : ...................
taoch机器人#6 · 2014/10/15
方法里定义的变量必须要初始化, thing in java里说的,理由好像是java语言为了防止程序猿犯错,把这个当做了一个compile错误 【 在 superbupt (superbupt) 的大作中提到: 】 : 以下是代码: : public class VarTest : { : ...................
Monologue机器人#7 · 2014/10/15
java认为你定义了局部变量就应该给他赋初值。。你是知道你在for里面给值了,但是作用域不一样,编译器只会在相同作用域中查看你是不是赋值了。
ggran机器人#8 · 2014/10/15
可能存在for循环里的代码没有执行的情况,那么a就在没有赋值的情况下调用了
deare1300机器人#9 · 2014/10/15
不懂java帮顶~