A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Switch语句括号中的值可不可以是null, case值可不可以是null?

12 个回复

倒序浏览
在java中,switch语句中表达式的值必须是整形、字符型、字符串类型;而case后的常量值与switch后的表达式相对应也应该是整形、字符型、字符串类型。
回复 使用道具 举报
少年闰土 发表于 2015-6-2 21:53
在java中,switch语句中表达式的值必须是整形、字符型、字符串类型;而case后的常量值与switch后的表达式相 ...

那如果我 New 一个String类型的对象呢?
回复 使用道具 举报
本帖最后由 少年闰土 于 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



回复 使用道具 举报
switch里面不能为null
回复 使用道具 举报
switch(xxxx)
xxxx可以是byte、short、char、int
jdk1.5加入枚举
jdk1.7加入字符串
case后面跟的只能是常量
回复 使用道具 举报
switch(表达式)
表达式返回值须是int,byte,char,short
case字句中的取值须为常量,且不能相同
回复 使用道具 举报
少年闰土 发表于 2015-6-3 09:57
可以的因为在java中字符串变量就是用String类型的对象来存储的,写了测试例子如下:public class TestSwit ...

,溜66666666
回复 使用道具 举报
山崩地裂 发表于 2015-6-3 10:02
switch(xxxx)
xxxx可以是byte、short、char、int
jdk1.5加入枚举

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

Switch后面可以,case后面不可以.
回复 使用道具 举报
不可以的,上面说的就是哪几种可以的类型,你可以编写程序验证一下
回复 使用道具 举报

现在看我答案,我怎么都看不懂了:lol
首先case后必须是常量值,所以不能为null
再者switch后跟表达式,所以不可以是null
回复 使用道具 举报
学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马