【发布时间】:2014-10-28 05:40:02
【问题描述】:
这是我作为家庭作业做的一个小程序的一部分:
public Exam maxGrade() {
Node p = firstNode;
int max = 0;
String name;
while (p!=null) {
if (p.info.getGrade()>max) {
max = p.info.getGrade();
name = p.info.getName();
}
p = p.next;
}
if (name==null)
return null;
else
return searchByName(name);
}
所以当我继续编译时,编译器会输出以下消息:
Student.java:127:错误:变量名可能尚未初始化 if (name==null)
问题很容易解决,将第四行替换为:
String name = null;
现在,我可以看到其中的一些逻辑。但我真的很想掌握问题背后的工作原理。 我的意思是,如果编译器看到你在代码中对它做某事,编译器检查变量是否被初始化似乎是合理的,但我认为我没有做任何需要初始化变量的事情。
根据this 等来源,当我简单地声明我的字符串(或任何其他对象)变量“名称”时,它已经指向 null。那么为什么简单地检查该值是否为空会被视为异常呢?除了赋值之外,编译器会考虑我对未初始化变量所做的任何事情吗?
【问题讨论】:
-
不,这不是它(您提供的链接)所说的。如接受的答案所述,局部变量未初始化,因此出现错误。
标签: java object compiler-errors initialization