切换语句未初始化的变量

时间:2012-11-04 09:11:13

标签: java switch-statement

以下代码告诉我:The local variable str may not have been initialized

public class experiment{

    public static void main(String[] args){

        int day = 1;
        String str;

        switch (day) {
        case 1 : str = "nice";
        break;
        }

        System.out.println(str);

    }


}

所以,我给了str一个null值,但它仍然有效,但我仍然想知道为什么文档上的那个没有初始化值,我已经三重检查了我想我有任何错别字:

public class SwitchDemo {
    public static void main(String[] args) {

        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;
        }
        System.out.println(monthString);
    }
}

1 个答案:

答案 0 :(得分:13)

因为文档示例的default中有switch个案例陈述。如果没有其他case语句匹配,则调用它。在您自己的代码中,您没有这样的“后备”。

因此,总是至少有一个被调用的语句,它将始终初始化monthString