java未初始化字符串_在Java中处理未初始化的字符串

这是我作为家庭作业所做的一个小程序的一部分:

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: error: variable name might not have been initialized

if (name==null)

用以下代码替换第四行可以很容易地解决这个问题:

String name = null;

现在,我可以看到一些逻辑.但我真的很想掌握这个问题背后的运作方式.

我的意思是,如果变量在你的代码中看到你正在对它做一些事情,那么编译器会检查变量是否被初始化似乎是合理的,但我认为我没有做任何需要初始化变量的事情.

根据像this这样的来源,当我简单地声明我的String(或任何其他Object)变量“name”时,它已经指向null.那么为什么仅仅检查该值是否为空它被认为是异常?除了赋值之外,编译器是否会考虑我对未初始化变量所做的任何错误?