黑马程序员技术交流社区

标题: Switch语句括号中的值可不可以是null, case值可不可以是null? [打印本页]

作者: 1352107393    时间: 2015-5-31 18:25
标题: Switch语句括号中的值可不可以是null, case值可不可以是null?
Switch语句括号中的值可不可以是null, case值可不可以是null?
作者: 少年闰土    时间: 2015-6-2 21:53
在java中,switch语句中表达式的值必须是整形、字符型、字符串类型;而case后的常量值与switch后的表达式相对应也应该是整形、字符型、字符串类型。

作者: 1352107393    时间: 2015-6-3 00:15
少年闰土 发表于 2015-6-2 21:53
在java中,switch语句中表达式的值必须是整形、字符型、字符串类型;而case后的常量值与switch后的表达式相 ...

那如果我 New 一个String类型的对象呢?
作者: 少年闰土    时间: 2015-6-3 09:57
本帖最后由 少年闰土 于 2015-6-3 09:59 编辑
1352107393 发表于 2015-6-3 00:15
那如果我 New 一个String类型的对象呢?

可以的因为在java中字符串变量就是用String类型的对象来存储的,写了测试例子如下:public class TestSwitch {
public class TestSwitch {
        public static void main(String[] args) {
                // TODO 自动生成的方法存根
                String str = new String("1");
                String str1 = null;
                switch (str) {
                        case "":
                                System.out.println("\"\"");
                                break;
                        case "1":
                                System.out.println("1");
                                break;
                        case "2":
                                System.out.println("2");
                                break;
                        default:
                                System.out.println("default");
                                break;
                }
        }
}

结果如下打印:
1




作者: 白水丶    时间: 2015-6-3 10:02
switch里面不能为null
作者: 山崩地裂    时间: 2015-6-3 10:02
switch(xxxx)
xxxx可以是byte、short、char、int
jdk1.5加入枚举
jdk1.7加入字符串
case后面跟的只能是常量
作者: 胡亚辉    时间: 2015-6-3 13:46
switch(表达式)
表达式返回值须是int,byte,char,short
case字句中的取值须为常量,且不能相同
作者: 1352107393    时间: 2015-6-3 20:50
少年闰土 发表于 2015-6-3 09:57
可以的因为在java中字符串变量就是用String类型的对象来存储的,写了测试例子如下:public class TestSwit ...

,溜66666666
作者: 1352107393    时间: 2015-6-3 20:57
山崩地裂 发表于 2015-6-3 10:02
switch(xxxx)
xxxx可以是byte、short、char、int
jdk1.5加入枚举

可null  是常量啊,不过是空常量
作者: 1352107393    时间: 2015-6-3 21:01
少年闰土 发表于 2015-6-3 09:57
可以的因为在java中字符串变量就是用String类型的对象来存储的,写了测试例子如下:public class TestSwit ...

Switch后面可以,case后面不可以.
作者: java8023    时间: 2015-6-3 21:28
不可以的,上面说的就是哪几种可以的类型,你可以编写程序验证一下
作者: 少年闰土    时间: 2015-6-3 21:29
1352107393 发表于 2015-6-3 20:50
,溜66666666

现在看我答案,我怎么都看不懂了:lol
首先case后必须是常量值,所以不能为null
再者switch后跟表达式,所以不可以是null
作者: shao122791159    时间: 2015-6-3 23:28
学习了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2