我注意到,在下面的代碼示例中,當聲明「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