string 长度_String 类型的compareTo源码解析

49d9d85d6a6e1a389a036e74e1c33fd2.png

官网API(JDK13):

94287b952620713110bafa256c35a6e5.png

先上结论:

1、计算compareTo两边字符串的总长度(length())

2、求出总长度中的最小值

3、如果长度相等,比较ASCII值相同,返回0

4、如果长度不相同,从前向后比较每个字母的ASCII值,返回有差异的ASCII码的差值

5、在总长度的最小值中,如果所有的ASCII码相同,则进行长度的相减,返回相减后的值(正数或负数)

源码:

a150c0cc6b84f9a0ac3a912567faf73d.png

7cf4de09db5f9310e6c339cad4df0709.png
引用API(JDK13):
public int compareTo(字符串 anotherString)
按字典顺序比较两个字符串。比较是基于字符串中每个字符的Unicode值。在String字典上比较此对象表示 的字符序列与自变量字符串表示的字符序列。如果此String对象在字典上在参数字符串之前,则结果为负整数。如果此String对象在字典上跟随自变量字符串,则结果为正整数。如果字符串相等,则结果为零;否则,结果为零。确切地compareTo返回方法0何时equals(Object)返回true。
这是字典顺序的定义。如果两个字符串不同,则它们要么在某个索引处具有不同的字符(这是两个字符串的有效索引),要么它们的长度不同,或者两者都存在。如果它们在一个或多个索引位置具有不同的字符,则令k为最小索引;然后,按照字典顺序,其位置k处的字符具有较小的值(由使用<运算符确定)在字典上位于另一个字符串之前。在这种情况下,compareTo返回k两个字符串位置上两个字符值的差值,即值:
this.charAt(k)-anotherString.charAt(k)
如果在它们之间没有索引位置不同,则较短的字符串在字典上在较长的字符串之前。在这种情况下, compareTo返回字符串长度的差值,即值:
this.length()-anotherString.length()
有关更细粒度的String比较,请参阅 Collator。
指定者:
compareTo 在界面中 Comparable<String>
参数:
anotherString- String要比较的。
返回值:
的值0,如果参数字符串等于该字符串; 0如果该字符串在字典上小于字符串参数,则小于该值;0如果该字符串在字典上大于字符串参数,则该值大于该字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值