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。
首先,我们来看两个例子:
a在字典中的顺序在b的前面
同样的,a在c的前面
再来看最后一个例子。
好了,看到这里,相信很多人都看出来了。返回的结果是两个字符串中第一个不相同的字符的ASCII码的差。
下面我们来看一下源码:
返回的是c1 -c2 即ASCII码值之差
为什么可以之间相减,很简单,字符在内存中本来就是以数字存储的,写到这里我们已经很清楚了compareTo的原理了。不得不说,源码真的是太牛逼了。简单明了。
我顺便再啰嗦一句,关于内存中存储字符的事情。看下面的demo你就知道了。