在Java中,CompareTo函数在这种情况下做什么

在Java中,CompareTo函数在这种情况下做什么,java,compare,compareto,Java,Compare,Compareto,当我运行代码时,它会出现-3,下一个是5, 我不明白你怎么能比较字母和数字。 “applebee”和“dog”甚至不是字符串变量 这是为在link上的学校作业准备的。通过compareTo返回的具体数字是一个实施细节,您应该尽量不要在意。compareTo的文档规定,您应该关心的只是符号:数字是负数(a.compareTo(b)b).通过compareTo返回的具体数字是一个实现细节,您不应该在意。compareTo的文档规定,您应该关心的只是符号:数字是负数(a.compareTo(b)b)在

当我运行代码时,它会出现-3,下一个是5,
我不明白你怎么能比较字母和数字。 “applebee”和“dog”甚至不是字符串变量
这是为在link上的学校作业准备的。

通过
compareTo返回的具体数字是一个实施细节,您应该尽量不要在意。
compareTo
的文档规定,您应该关心的只是符号:数字是负数(
a.compareTo(b)<0
意味着
a
),零(
a.compareTo(b)
意味着
a
等于
b
),还是正数(
a.compareTo(b)>0
意味着
a>b
).

通过
compareTo
返回的具体数字是一个实现细节,您不应该在意。
compareTo
的文档规定,您应该关心的只是符号:数字是负数(
a.compareTo(b)<0
意味着
a
),零(
a.compareTo(b)
意味着
a
等于
b
),还是正数(
a.compareTo(b)>0
意味着
a>b
)在练习之前,我的建议是阅读文档。在这种情况下,Oracle参考资料清楚地解释了正数和负数的原因:

按字典顺序比较两个字符串。比较基于字符串中每个字符的Unicode值。此字符串对象表示的字符序列按字典顺序与参数字符串表示的字符序列进行比较。如果此字符串对象按字典顺序位于参数字符串之前,则结果为负整数。如果此字符串对象按字典顺序跟随参数字符串,则结果为正整数。如果字符串相等,则结果为零;当equals(Object)方法将返回true时,compareTo将返回0

这里解释了为什么-3和+5

这是词典排序的定义。如果两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引是两个字符串的有效索引,要么它们的长度不同,要么两者都不同。如果它们在一个或多个索引位置具有不同的字符,则k是此类索引的最小值;然后,使用<运算符确定其在位置k处的字符具有较小值的字符串按字典顺序位于另一个字符串之前。在本例中,compareTo返回两个字符串中位置k处两个字符值的差值,即:

如果没有不同的索引位置,则较短的 字符串按字典顺序位于较长字符串之前。在这种情况下,, compareTo返回指定的字符串长度之差 是,值为:


练习前,我的建议是阅读文档。在这种情况下,Oracle参考资料清楚地解释了正数和负数的原因:

按字典顺序比较两个字符串。比较基于字符串中每个字符的Unicode值。此字符串对象表示的字符序列按字典顺序与参数字符串表示的字符序列进行比较。如果此字符串对象按字典顺序位于参数字符串之前,则结果为负整数。如果此字符串对象按字典顺序跟随参数字符串,则结果为正整数。如果字符串相等,则结果为零;当equals(Object)方法将返回true时,compareTo将返回0

这里解释了为什么-3和+5

这是词典排序的定义。如果两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引是两个字符串的有效索引,要么它们的长度不同,要么两者都不同。如果它们在一个或多个索引位置具有不同的字符,则k是此类索引的最小值;然后,使用<运算符确定其在位置k处的字符具有较小值的字符串按字典顺序位于另一个字符串之前。在本例中,compareTo返回两个字符串中位置k处两个字符值的差值,即:

如果没有不同的索引位置,则较短的 字符串按字典顺序位于较长字符串之前。在这种情况下,, compareTo返回指定的字符串长度之差 是,值为:


Java String类提供了
.compareTo()
方法,以便按字典顺序比较字符串

此方法返回的是一个
int
,可解释为:

  • 返回
    <0
    ,然后调用该方法的字符串按字典顺序排在第一位(在字典中排在第一位)
  • 返回
    ==0
    ,则这两个字符串在字典上是等价的
  • 返回
    >0
    ,然后首先按字典顺序传递给compareTo方法的参数
在您的示例中:

“axe”。比较(“dog”)
返回
-3
,因为
axe
在词典中是词典中的第一位

它从每个字符串的第一个字符开始:
a
在字典中位于
d
之前。如果比较的字符在字典中是等效的 它将转到字符串中的下一个字符进行比较,依此类推

this.length()-anotherString.length()

第一个字符串中的前5个字符
“apple”
在词典学上等同于第二个字符串,但字符
bee的
位于第二个字符串之后,因此它将返回
5
,该值大于
0
,因为第二个字符串在词典中位于第一位。

Java string类提供了
。compareTo()
方法,以便按字典顺序比较字符串this.charAt(k)-anotherString.charAt(k)
this.length()-anotherString.length()
 "applebee's".compareTo("apple")