这是我作为家庭作业做的一个小程序的一部分:
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:错误:如果 (name==null),变量名可能尚未初始化
通过将第四行替换为:
String name = null;
现在,我可以看到其中的一些逻辑。但我真的很想掌握问题背后的工作原理。我的意思是,如果编译器看到你在代码中对它做某事,编译器检查变量是否被初始化似乎是合理的,但我认为我没有做任何需要初始化变量的事情。
根据这样的来源,当我简单地声明我的字符串(或任何其他对象)变量“名称”时,它已经指向 null。那么为什么简单地检查该值是否为空会被视为异常呢?除了赋值之外,编译器会考虑我对未初始化变量所做的任何事情吗?