2019-09-08 compare to

compareTo(String)方法中其实是从头开始,一个一个字符的比对原字符串和参数字符串中的字符,如果相同就下一个,直到字符出现不同(包括某一个字符串结束了)就计算这两个不同字符的ASCII码的差,作为返回值。(或是直到最后都相同就返回0)

也正是因为这样的计算才使得原字符串更长的时候(假设前几位相同的情况下),返回值会大于零(因为那一位是某个字符的ASCII码减去0,ASCII码都是正数),而原字符串更短的时候,返回值会小于0(那一位是0减去某个字符的ASCII码)。

但我们不要忽略了一种情况就是两个字符串虽然长度相等但是中间有字母不同:

String str1="abcde";

String str2="abdde";

str1.compareTo(str2);
这时的返回值是-1,即是c的ASCII码(99)减去了d的ASCII码(100)所得。

还有一种情况字符串前面的字符相同但字符串长度不同时返回字符串相差位数而并非 ASCII 码差值。

String str1 = "abc";
String str2 = "abcdef";
System.out.println(str1.compareTo( str2 ));
输出 -3。

你可能感兴趣的:(2019-09-08 compare to)