起因
本来写了一个键盘传入字串,统计每个字符出现的次数。结果出现次数总是有空的东西,并且显示数量为1.
思路
字串转成字串数组,出现的元素放进HashMap中,可是结果总显示map中多一个1
解决过程
1,通过查资料也没能发现为什么使用Split分割字串产生的数组遍历不对。
2,然后我想第一个元素出问题,那我就debug看看哪里错了,未果。
3,我又打印使用Split得到的字串数组,结果发现第一个元素的位置是空的,大概打印出来就是“,1,2,3”。这种的,明显看到第一个元素没有输出,(其实已经输出了,看不到因为他就是空的元素)。
4,又想打印第一个元素的ASCII,结果你想想,这个元素都没有你还想打印他的Ascii?
疑问解释
我琢磨了一下,又在博客园里面查了一些split相关的资料。
查到使用split的时候,相邻的分割符之间、分割符与左边起始位置或右边终点位置之间都算有空白字符串被分隔了。这就是split执行的机制。平时使用Split分成字符产数组打印的时候,没什么不同,是因为第一个元素是空的不存在嘛,打印出来你也看不见,对结果没啥大影响,但是如果你加入map这种一 一对应机制存储结果就不对了,就会暴漏Split方法的弊端。
结论
所以split匹配格式为空摘取单个字符时候,第一个数组元素是空也就是无元素。正常客户使用感觉影响不大,但如果需要精确使用的时候,推荐使用toCharArray方法。