代码一:

现象:预期输出abc三个字母,每个单独一行,实际上什么都不会输出。

原因:String.split()的参数是一个正则表达式,"."表示在正则表达式中表示任意字符,因此会将"a.b.c"当成五个分隔符,分隔完成后什么都不剩了,所以什么都不会输出。

正确用法:如果是要用正则表达式中的特殊字符作为分隔符,则需要转义,类似于str.split("\\.")

 

代码二:

现象:预期输出true,实际输出false。

原因:字符串和整型是两种不同的类型,有各自的equals方法,因此不会相等。一般来说没有公共父类的两个对象执行equals操作都会返回false。

正确用法:进行类型转换,例如"9191".equals(catalogID+"")

 

代码三:

现象:预期输出true,实际输出false。

原因:计算机用二进制表示十进制浮点数时,有可能无法精确。如果直接输出变量a,会是15.809999

正确用法:需要考虑浮点型可能不精确的问题,一般可以使用Math.abs(a-b)<0.000001来判断两个浮点型是否相等。