Kotlin中compareTo函数返回的int值具体含义是什么?
Kotlin 字符串 compareTo 比较规则说明
Kotlin 字符串的compareTo函数遵循Unicode码点逐位字典序规则,具体逻辑如下:
- 从两个字符串的首位字符开始,按索引顺序依次对比相同位置的字符
- 若某一位置的两个字符不相等,直接返回「当前字符串该位置字符的Unicode码值 - 对比字符串同位置字符的Unicode码值」,对比直接终止
- 若所有相同索引位置的字符都完全相等,返回「当前字符串长度 - 对比字符串长度」
示例逐一解释
示例1:"Hello World".compareTo("a") 返回 -25
首字符对比就出现差异:
"Hello World"首字符是H,Unicode码值为72- 对比字符串
"a"的首字符是a,Unicode码值为97
计算差值为 72 - 97 = -25,所以"Hello World"确实小于"a"。返回值是两个字符的实际码差,没有固定为-1这类数值,是实现上直接返回差值效率更高,且符合Comparable接口只要求返回正负零的通用约定。
示例2:"Hello World".compareTo("HelloWorld") 返回 -55
前5位字符H e l l o完全相同,第6位出现差异:
"Hello World"第6位是空格,Unicode码值为32"HelloWorld"第6位是W,Unicode码值为87
差值为32 - 87 = -55,所以"Hello World"小于"HelloWorld"。
示例3:"Hello World".compareTo("Hello World") 返回55
前6位字符H e l l o 空格完全相同,第7位出现差异:
"Hello World"第7位是W,Unicode码值为87"Hello World"第7位是第二个空格,Unicode码值为32
差值为87 - 32 = 55,所以"Hello World"大于"Hello World"。
内容的提问来源于stack exchange,提问作者Sepideh Abadpour
相关产品推荐
相关产品推荐

