switch参数支持的类型

switch(expr)中,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式。其中整数表达式可以是基本类型int或其对应的包装类型Integer,当然也包括不同长度的整型,例如:short。由于btye,shortchar类型的值都可以被隐式的转换为in类型,因此这些类型以及他们的包装类型都可以作为switch的表达式里。


与switch对应的是case语句,case语句之后可以是直接的常量数值,例如1,2.也可以是一个常量计算式,例如1+1.还可以是final类型的变量(final变量必须是编译时的常量),例如final int a=0,但是不能是变量或者带有变量的表达式,例如i*2,当然更不可能是浮点型数例如1.0。


在java jdk7.0中,switch开始支持string类型了,从本质上来讲,switch对字符串的支持,其实是int类型值的匹配,他的实现原理如下:通过对case后边的string对象调用hashCode()方法,得到一个int类型的hashCode()函数,获取一个hash值(int 类型)。用这个hash值来匹配所有的case.如果没匹配成功,说明不存在,如果匹配成功了,接着会调用字符串的String的equals()方法进行匹配。因此可以看出String变量不能为null.同时,switch的case自居中使用的字符串也不能为null.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值