关于switch语句中使用String类型的实现原理
2017-07-21 14:42
281 查看
在Java 7 以后,
从本质来讲,
通过对
那么当匹配的时候,首先调用这个字符串的
如果没有匹配成功,说明不存在;如果匹配成功了,接着会调用字符串的
由此看出,String变量不能是null;同时,
switch语句可以用作String类型上。
从本质来讲,
switch对字符串的支持,其实也是int类型值的匹配。它的实现原理如下:
通过对
case后面的String对象调用
hashCode()方法,得到一个int类型的Hash值,然后用这个Hash值来唯一标识着这个
case。
那么当匹配的时候,首先调用这个字符串的
hashCode()方法,获取一个Hash值(int类型),用这个Hash值来匹配所有的
case,
如果没有匹配成功,说明不存在;如果匹配成功了,接着会调用字符串的
equals()方法进行匹配。
由此看出,String变量不能是null;同时,
switch``的case子句中使用的字符串也不能为null。
相关文章推荐
- 关于switch语句中使用String类型的实现原理
- 关于java switch中不能使用String类型
- 关于java switch中不能使用String类型
- 在switch语句中使用字符串以及实现原理
- Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致 Java之戳中痛点 - (4)i++ 和 ++i 探究原理 Java之戳中痛点 - (1)易变业务使用脚本语言编写 Java之戳中痛点 - (2)取余用偶判断,不要用奇判断 (5)switch语句break不能忘以及default不同位置的用法 Java之戳中痛点 - (7)善用Java整型缓存池
- Java 7 switch支持String类型的原理和关于switch一些细节
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- 关于函数strtok和strtok_r的使用要点和实现原理(二)
- 关于函数strtok和strtok_r的使用要点和实现原理(一)
- 在c++Builder中使用boost正则表达式实现的查找double和int类型的字符串,并实现StringToInteger和StringToDouble函数
- 关于函数strtok和strtok_r的使用要点和实现原理
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- 关于函数strtok和strtok_r的使用要点和实现原理
- 关于函数strtok和strtok_r的使用要点和实现原理
- 关于函数strtok和strtok_r的使用要点和实现原理(二)
- 关于函数strtok和strtok_r的使用要点和实现原理(二)
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- (转)stringstream类的使用(实现string类型与其余类型的转化)
- (转)stringstream类的使用(实现string类型与其余类型的转化)
- 关于统计的一个sql问题,使用动态sql语句实现。