我注意到,在下面的代码示例中,当声明“Scanner scan”和“String [] words”时,它们被分配为'null'。我们为什么需要这样做?非常感谢您的帮助! *示例代码旨在从文件中读取字符串,文件的第一行是字符串的数量:int howMany。为什么在使用构造函数时需要分配一个空值? Java
int howMany;
Scanner scan = null; //why do we need to assign a 'null'?
File f;
String[] words = null; //why not use String[] words= new String []; ?
try {
f = new File(filename);
scan= new Scanner(f);
howMany = scan.nextInt();
words = new String[howMany];
for (int i = 0; i < howMany; i++) {
words[i] = scan.next();
}
} catch (IOException e) {
System.out.println(e);
}
你不必这样做,它只是一个糟糕的做法,将事情留作“默认”。明确说明通常更清楚。 – Mephy
局部变量未初始化为默认值,这会迫使您为它们提供“已知”值以帮助防止奇怪和不可重复的结果;) – MadProgrammer
在这两种情况下,定义和初始化变量都会更有意义在代码的稍后时间点,例如,何时知道howMany。 – EJP