返回信息流以下是代码:
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循环中已经赋值了,为什么还会错误?求大神解答
这是一条镜像帖。来源:北邮人论坛 / java / #35246同步于 2014/10/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求解Java局部变量初始化问题!!!
superbupt
2014/10/15镜像同步15 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
嗯,谢谢~
又用Eclipse跑了一下程序,结果是这样的:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The local variable a may not have been initialized
用notepad++还是不太可取
【 在 NowerBupt 的大作中提到: 】
: “可能尚未初始化变量a ”,如果没有执行循环,那a不就没被赋值吗
是语法错误,for循环中的a和声明的int a作用域是不一样的,System.out.println(a); 语句会自动寻找a所在的作用域,即main(){},但不会向下寻找其包含的for(){}域中对a的初始化操作,
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);
}
}
谢谢!能否推荐我一些介绍JVM等比较深入、原理的书籍?
如果不懂内部原理,感觉只是暂时强行记忆,提高不了水平。
【 在 a2430226066 的大作中提到: 】
: package practice;
: /**
: * @author
: ...................
方法里定义的变量必须要初始化, thing in java里说的,理由好像是java语言为了防止程序猿犯错,把这个当做了一个compile错误
【 在 superbupt (superbupt) 的大作中提到: 】
: 以下是代码:
: public class VarTest
: {
: ...................