在 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蛮喜欢考这个观念,我可以作证,因为我去考的时候就遇到好几题相似的题目,然后问你编译会不会过?