switch参数支持的类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/XiaopinOo/article/details/77891479

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.

展开阅读全文

没有更多推荐了,返回首页