作为compareTo()
方法进行的字符串比较的概括:
对于两个给定的字母:
两个具有匹配值的字母,结果值为0。
如果给定字母在另一个给定字母之前到位,则两者的比较值为负。
如果给定字母的位置紧跟另一个字母,则两者的比较值将为正。
可以这样认为:
按照26个英语字母的顺序,“ A”可以被视为索引1,而“ B”可以被视为索引2:
因此,A = 1; B = 2。
A-B = -1。
要达到值A,B必须减小1,或者B-1 = 1 =A。
例如:
int result;
String letterA = "a";
String letterB = "b";
result = letterA.compareTo(letterB);
System.out.println("The difference between the letter \"a\" and the letter \"b\" will be equivalent to: " + result);
在考虑字符串时:
前两个字符的字母索引差(其沿各自字符串的字符串字符索引相等且字母索引不匹配)将是
String.compareTo(String)
方法返回的值(其中“字符串”代表广义字符串值) )。例如:
int result;
String stringBA = "ba";
String stringBD = "bd";
result = stringBA.compareTo(stringBD);
System.out.println("The difference between string \"ba\" and string \"bd\" will be equivalent to: " + result);
比较结果将为-3,因为该方法中最终比较的字母之间的差异是字符“ a”和“ d”,它们的字母索引分别为1和4。
可以这样说:要达到A的值,必须将D减少3,或者D-3 =A。
可以认为这是准确的吗?
最佳答案
可以认为这是准确的吗?
这取决于您所说的准确。
作为规范,它是不完整的:
它仅处理“字母”字符和包含“字母”的字符串。相比之下,String.compareTo
适用于任何代码点序列。
它不处理长度不相等的字符串,这些字符串的公共部分具有相同的字符子序列。
忽略规格中的漏洞,这是一个超规格。 String.compareTo
的javadoc不能精确指定返回值是什么。它只是说它是零,负还是正。
忽略这些漏洞,看起来它是(至少)@ user3580294发现的compareTo
实现的行为的适当模型。
javadocs给出了String.compareTo的实际规范。它是明确的和确定的。换句话说,没有必要重述它。
关于java - 用compareTo()方法比较Java字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23742932/