目录
1.相等比较
equals() 方法
equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,它返回 true,否则返回 false。对于字符的大小写,也在检查的范围之内。equals() 方法的语法格式如下:
str1.equals(str2);
equalsIgnoreCase() 方法
equalsIgnoreCase() 方法的作用和语法与 equals() 方法完全相同,唯一不同的是equalsIgnoreCase() 比较时不区分大小写。
2.大小比较
compareTo() 方法
通常,仅仅知道两个字符串是否相同是不够的。对于排序应用来说,必须知道一个字符串是大于、等于还是小于另一个。一个字符串小于另一个指的是它在字典中先出现。而一个字符串大于另一个指的是它在字典中后出现。
compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值
compareTo() 方法的语法格式如下:
str.compareTo(String otherstr);
它会按字典顺序将 str 表示的字符序列与 otherstr 参数表示的字符序列进行比较。如果按字典顺序 str 位于 otherster 参数之前,比较结果为一个负整数;如果 str 位于 otherstr 之后,比较结果为一个正整数;如果两个字符串相等,则结果为 0。
字典顺序比较规则:
字符串按照字典顺序(lexicographical order)进行比较,并不是仅仅比较第一个字母,而是逐个字符进行比较,直到找到不同的字符或者比较完所有字符。字典顺序比较的规则如下:
- 字符比较:从两个字符串的开始位置(即第一个字符)进行比较,比较它们的Unicode值。如果字符不同,则比较结果由第一个不同的字符的Unicode值决定。
- 长度比较:如果第一个字符相同,则比较下一个字符,依此类推。如果两个字符串在某个位置的字符相同,则比较下一个位置的字符。
- 终止条件:如果两个字符串在某个位置之前的所有字符都相同,但一个字符串在该位置之后没有更多的字符,则较短的字符串被认为是“小于”较长的字符串。
举例:
"apple" 和 "banana":比较第一个字符 'a' 和 'b',因为 'a' 的Unicode值小于 'b',所以 "apple" 小于 "banana"。
考虑两个字符串 "apple" 和 "applet":
- 首先比较第一个字符:'a' 和 'a',它们相同。
- 然后比较第二个字符:'p' 和 'p',它们相同。
- 接着比较第三个字符:'p' 和 'p',它们相同。
- 再比较第四个字符:'l' 和 'l',它们相同。
- 最后比较第五个字符:'e' 和 't','e' 的Unicode值小于 't' 的Unicode值。
因此,根据字典顺序,"apple" 小于 "applet"。
3. 注意
BigDecimal的等值比较应该用compareTo()而不应该使用equals()方法
BigDecimal是一个非常好用的表示高精度数字的类,其中提供了很多丰富的方法。 但是,他的equals方法使用的时候需要谨慎,因为他在比较的时候,不仅比较两个数字的值,还会比较他们的标度(小数位长度),只要这两个因素有一个是不相等的,那么结果也是false、 如果想要对两个BigDecimal的数值进行比较的话,可以使用compareTo方法。
更详细的原因可以阅读这篇文章:
BigDecimal的等值比较应该用compareTo()而不应该使用equals()方法_bigdecimal的等值比较应使用equals()方法,而不是compareto()方法。-优快云博客