You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于String类compareTo方法返回值的理解疑问

为什么"bc".compareTo("bb")返回1而不是-1?

嘿,我来帮你理清这个误区!你搞反了compareTo()方法的返回逻辑啦😉

首先得明确Java里String.compareTo()的核心规则:它是按Unicode字符值的字典序来比较两个字符串,返回的是两个字符串中第一个不同字符的Unicode值之差,具体逻辑是:

  • 如果当前字符串(调用方法的那个)比参数字符串大,返回正数
  • 如果当前字符串比参数字符串小,返回负数
  • 完全相等则返回0

回到你的例子:
你定义的s1 = "bc",s2 = "bb",我们逐字符拆解比较:

  1. 第一个字符都是'b',Unicode值都是98,完全相同,所以继续对比下一个字符
  2. 第二个字符:s1的是'c'(Unicode值99),s2的是'b'(Unicode值98)
  3. 计算差值:99 - 98 = 1,这就是s1.compareTo(s2)返回1的原因

你之前的理解误区在于:你觉得"c在b之后"所以s1更小,但实际上字典序里,字符越靠后,对应的字符串越大。"bc"比"bb"大,因为第二个字符c的排序在b之后,所以用s1去和s2比较时,会返回正数。

举个反向例子验证:如果执行System.out.println(s2.compareTo(s1));,结果就会是-1,因为此时是用s2("bb")去比s1("bc"),第二个字符b的Unicode值减去c的,得到-1。

内容的提问来源于stack exchange,提问作者JcodingW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:04:34