如何比较两个字符串的大小

要求:现有两个任意字符串s1,s2需要比较它们的大小。

在Java中可以使用compareTo()方法来对两个字符串比较大小。
String类关于compareTo()方法的解释如下:

If they have different characters at one or more index positions, let k be the smallest such index; then the string whose character at position k has the smaller value, as determined by using the < operator, lexicographically precedes the other string. In this case, compareTo returns the difference of the two character values at position k in the two string – that is, the value:
this.charAt(k)-anotherString.charAt(k)
If there is no index position at which they differ, then the shorter string lexicographically precedes the longer string. In this case, compareTo returns the difference of the lengths of the strings – that is, the value: this.length()-anotherString.length()

简单翻译为:
如果两个字符串不同,则它们在某个索引处具有不同的字符,该索引是两个字符串的有效索引,或者它们的长度不同,或者两者都不同。如果它们在一个或多个索引位置具有不同的字符,而k是此类索引的最小值;然后,在位置k处的字符具有较小的值的字符串(通过使用<运算符确定)在词汇上先于另一个字符串。在这种情况下,compareTo()返回两个字符串中位置k处两个字符值的差值个人思考:(这不同于十进制的两位数的比较,因为十进制相应的位上只有0~9这10个数字,而字符串在末位理论上是可以无限延伸的,所以字符串的比较中,任何位上的权植都是相同的,一旦有了结果就立刻返回相应的值)

如果没有不同的索引位置,那么较短的字符串在词汇上先于较长的字符串,compareTo()返回字符串长度的差值。

两个字符串按照从左到右的顺序依次比较该索引的ASCII码值的大小,s1的左一比较s2的左1,s1的左2比较s2的左2…而一旦相同位置的索引比较出大小后,无论后面是否还有未比较的字符,都会直接返回结果。

(1)当s1 (2)当s1=s2时,返回0;
(3)当s1>s2时,返回正值

返回负值或正值的大小为同位置的字符在ASCII码表对应的十进制编号的差。

你可能感兴趣的:(字符串,java)