快捷搜索:  汽车  科技

compare可以导出比较结果么(从源码角度来分析CompareTo)

compare可以导出比较结果么(从源码角度来分析CompareTo)同样的,a在c的前面a在字典中的顺序在b的前面其结果是一个正整数,如果此String对象字典如下的参数字符串结果是零,如果两个字符串相等,CompareTo返回0时,equal(Object)方法将返回true。首先,我们来看两个例子:

我们平常通过在网上查询很快可以得到以下讯息。

Java String.compareTo()方法描述的是:

比较两个字符串的字典。比较是基于字符串中的每个字符的Unicode值。此String对象表示的字符序列的参数字符串表示的字符序列进行比较字典.

  • 其结果是负的整数,如果此String对象字典前面的参数字符串

  • 其结果是一个正整数,如果此String对象字典如下的参数字符串

  • 结果是零,如果两个字符串相等,CompareTo返回0时,equal(Object)方法将返回true。

首先,我们来看两个例子:

compare可以导出比较结果么(从源码角度来分析CompareTo)(1)

a在字典中的顺序在b的前面

同样的,a在c的前面

再来看最后一个例子。

compare可以导出比较结果么(从源码角度来分析CompareTo)(2)

好了,看到这里,相信很多人都看出来了。返回的结果是两个字符串中第一个不相同的字符的ASCII码的差。

下面我们来看一下源码:

compare可以导出比较结果么(从源码角度来分析CompareTo)(3)

返回的是c1 -c2 即ASCII码值之差

为什么可以之间相减,很简单,字符在内存中本来就是以数字存储的,写到这里我们已经很清楚了compareTo的原理了。不得不说,源码真的是太牛逼了。简单明了。

我顺便再啰嗦一句,关于内存中存储字符的事情。看下面的demo你就知道了。

compare可以导出比较结果么(从源码角度来分析CompareTo)(4)

猜您喜欢: