您的位置:首页 > 其它

switch参数支持的类型

2017-09-08 10:20 169 查看
switch(expr)中,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式。其中整数表达式可以是基本类型int或其对应的包装类型Integer,当然也包括不同长度的整型,例如:short。由于btye,short和char类型的值都可以被隐式的转换为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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: