java新手求关于局部变量初始化问题的指导,switch中的default语句让我困惑。
答案:4 悬赏:80 手机版
解决时间 2021-01-31 20:59
- 提问者网友:皆是孤独
- 2021-01-31 14:21
java新手求关于局部变量初始化问题的指导,switch中的default语句让我困惑。
最佳答案
- 五星知识达人网友:渡鹤影
- 2021-01-31 15:06
default是指前面的所有case都不匹配 默认项
LZ你想想 你不手动初始化 但是你有默认值 他没有匹配值就匹配default了 最后打印grade会用default的grade
当你没有defualt的时候 你又不手动初始化 System.out.print("小华是"+grade+"的学生"); 编译器是找不到grade值的 肯定不会通过编译的
LZ你想想 你不手动初始化 但是你有默认值 他没有匹配值就匹配default了 最后打印grade会用default的grade
当你没有defualt的时候 你又不手动初始化 System.out.print("小华是"+grade+"的学生"); 编译器是找不到grade值的 肯定不会通过编译的
全部回答
- 1楼网友:末日狂欢
- 2021-01-31 16:51
你最后的输出语句用到了grade,所以编译器去检查有没有赋值。switch中的case是有条件执行的,也就是说有可能所有case分支都不会执行,也就是grade没能被初始化。这时如果你写了default,那么无论如何都会执行default部分(case中没有break)。所以就出现了不加default编译不通过的情况。
- 2楼网友:往事埋风中
- 2021-01-31 16:43
在switch语句中case1到case12中,没有满足条件就会进入default语句,变量的定义规定变量必须进行初始化,现在你不加default语句,变量就没有进行初始化,case后面是判断的,符合条件才会给变量grade初始化,如果不符合条件呢,就不会进入这个case语句中,如果1到12都不符合条件,那就是说grade没有初始化,所以编译不会通过
- 3楼网友:时间的尘埃
- 2021-01-31 15:56
因为在switch语句中case1到case12中,没有满足条件就会进入default,而java虚拟机不会知道case1到case12有没有满足条件,万一要是没有满足,也没有写default,grade就没有被赋值。如果写了default,就算case1到case12有没有满足条件,grade也能被赋值
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯