在 main() 裡面宣告的變數稱為「自動變數」,必須設值﹝初始化﹞才能使用,如果只有單純宣告它,它並不會被分配memory address。
這題例子舉的不好,所以你會看不出來,我另外舉個小例子:
public class Test{
public static void main(String[] args){
int sum;
sum++;
System.out.println(sum);
}
}
以上的source code無法編譯成功,會出現error message:variable sum might not have been initialized
所以自動變數一定要在宣告sum之後給它一個值﹝初始化﹞,才能使用,以下兩種方式都算是初始化↓
int sum;
sum = 0;
int sum = 0;
你的助教舉的例子等同於以下的 source code↓
import javax.swing.JOptionPane;
public class Welcome{
public static void main(String args[]){
String n1,n2;
n1 = JOptionPane.showInputDialog("請輸入一個整數");
n2 = JOptionPane.showInputDialog("請輸入一個整數");
int sum = Integer.parseInt(n1) + Integer.parseInt(n2);
JOptionPane.showMessageDialog(null,"sum = "+sum,"result",JOptionPane.PLAIN_MESSAGE);
}
}
所以 sum 等於是宣告就直接初始化﹝初始化的數值等於 user 輸入的兩個數值相加﹞,也難怪會讓你弄糊塗了這個觀念。
SCJP蠻喜歡考這個觀念,我可以作證,因為我去考的時候就遇到好幾題相似的題目,然後問你編譯會不會過?