字典比较compareTo() 方法详解
compareTo() 是通过比较字典来得出结论的,比较是基于字符串中每个字符的Unicode值,我们可以使用该方法判断他们是否相等,一般用于BigDecimal的比较
首先我们看compareTo的方法
- public int compareTo(String anotherString)
- anotherString 代表被对比的参数
- public int compareTo(Object o)
- o代表对象
返回值是整形的,它对应的是第一个字符和参数的第一个字符比较的Unicode差值,如果他们不相同,就会返回他们的的差值,如果相等,就会接着比较第二个字符
- 如果参数字符串等于此字符串,则返回值 0
- 如果此字符串小于字符串参数,则返回一个小于 0 的值
- 如果此字符串大于字符串参数,则返回一个大于 0 的值
实例
BigDecimal对比
有时候我们对比BigDecimal会直接对比int类型,那么用equals对比需要转为一样的类型,否则对比的结果不同
public static void main(String[] args) { BigDecimal bigDecimal1 = BigDecimal.valueOf(1); System.out.println(bigDecimal1); if (bigDecimal1.equals(1)) { System.out.println("相等"); }else { System.out.println("不相等"); } }
结果:
如果不想转为BigDecimal对比,想进行int和BigDecimal对比,我们可以使用compareTo()方法
public static void main(String[] args) { BigDecimal bigDecimal1 = BigDecimal.valueOf(1); BigDecimal bigDecimal2 = BigDecimal.valueOf(1); BigDecimal bigDecimal3 = BigDecimal.valueOf(2); int result; result = bigDecimal1.compareTo(bigDecimal2); System.out.println(result); result = bigDecimal1.compareTo(bigDecimal3); System.out.println(result); result = bigDecimal3.compareTo(bigDecimal1); System.out.println(result); if (bigDecimal1.compareTo(bigDecimal2) == 0){ System.out.println("相等"); } if (bigDecimal1.compareTo(bigDecimal3) != 0){ System.out.println("不相等"); } }
结果:
String对比
public static void main(String[] args) { String str1 = "Strings"; String str2 = "Strings"; String str3 = "Strings123"; int result; result = str1.compareTo( str2 ); System.out.println("str2-str1:"+result); result = str2.compareTo( str3 ); System.out.println("str3-str2:"+result); result = str3.compareTo( str1 ); System.out.println("str1-str3:"+result); } ```public static void main(String[] args) { String str1 = "Strings"; String str2 = "Strings"; String str3 = "Strings123"; int result; result = str1.compareTo( str2 ); System.out.println("str2-str1:"+result); result = str2.compareTo( str3 ); System.out.println("str3-str2:"+result); result = str3.compareTo( str1 ); System.out.println("str1-str3:"+result); }