java - Switch 语句未初始化的变量

标签 java switch-statement

下面的代码给我:局部变量 str 可能没有被初始化

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);
    }
}

最佳答案

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

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

关于java - Switch 语句未初始化的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217351/

相关文章:

c++ - 我如何根据可迭代对象进行案例陈述?

java - 如何将 switch 语句转换为 if 语句?

java - 在java中使用map continue问题进行整数到单词的转换

ruby - 为什么 switch 语句执行相等性测试的方式与 if 语句不同?

java - 切换一组输入的大小写?

java - 我想阅读保存的文档,但我不能我尝试将其更改为 .txt,.docx 仍然无法正常工作

java - 操作栏自定义组件(自定义开关)未随 actionLayout 显示

java - 内部 map 具有多个键值对的 map 内部的 map

Java - 相对于 JFrame 的光标位置

java - 在 JSF 中绘制图形(图表)