Java中的compareToIgnoreCase方法

Java中的compareToIgnoreCase方法,java,string,methods,Java,String,Methods,我在互联网上找到了这段代码,我正在努力理解它…我不知道为什么输出是: 10 -10 -六十九 按字典顺序比较两个字符串,忽略大小写差异。比较基于字符串中每个字符的Unicode值。此字符串对象表示的字符序列按字典顺序与参数字符串表示的字符序列进行比较。如果此字符串对象按字典顺序位于参数字符串之前,则结果为负整数。如果此字符串对象按字典顺序跟随参数字符串,则结果为正整数。如果字符串相等,则结果为零;compareTo在equals(Object)方法返回true的确切时间返回0是否来自此链接 嗯,

我在互联网上找到了这段代码,我正在努力理解它…我不知道为什么输出是: 10 -10 -六十九


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

的确切时间返回0是否来自此链接

嗯,有一个例子

str2.compareToIgnoreCase( str3 );

str3.compareToIgnoreCase( str1 );
为了

它返回-69,因为str4小于str2


检查此链接

比较类似于字典中的排序

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

返回<0,则调用该方法的字符串按字典顺序排在第一位(在字典中排在第一位)

返回==0,则这两个字符串在字典上是等价的

返回>0,则传递给compareTo方法的参数首先按字典顺序排列

更具体地说,该方法提供ASCII值的第一个非零差值。

因此,“computer”。compareTo(“comparison”)将返回(int)u'-(int)a'(21)。因为这是一个积极的结果,所以参数(“比较”)是首先按字典顺序排列的

例如:

result = str4.compareToIgnoreCase( str2 );

将返回-69,因为十进制空间中的值为32,“e”的值为101。如果将str4与str2进行比较,唯一的区别是str4的最后一个字符“”和str2的最后一个字符“e”。所以你计算(int)'SPACE'32-(int)'e'101=-69。因为这两个字符串的其余部分相等,所以它是0+(-69)=-69。

compareToIgnoreCase方法通过忽略大小写的差异,按字典顺序比较两个字符串


compareToIgnoreCase方法返回如下所示的整数

result > 0 if, x1 > x2
result < 0 if, x1 < x2
result = 0 if, x1 = x2
输出

32
0
在上面的例子中,我比较了小写的“helloworld”字符串和大写的“helloworld”字符串

它返回32。这意味着小写的“helloworld”字符串大于大写的“helloworld”字符串

在下一种情况下,使用compareToIgnoreCase方法,我将比较小写的“helloworld”字符串和大写的“helloworld”字符串

它返回0。这意味着两个字符串相等


compareToIgnoreCase方法忽略大小写敏感度

现在,来回答你的问题,你不明白的输出是10,-10和69,对吧

首先,我们需要了解什么是词典比较

词典比较或逐字符比较是对每个字符串进行逐字符比较。在该方法中,逐个获取两个字符串的字符并进行比较

如果两个字符相同,则返回0

如果不是,即差为非零,则停止比较并返回差

注意:此处字符的比较和差异基于其ASCII值

让我们一个接一个

int result = str2.compareToIgnoreCase( str3 );
这里将str2与str3进行比较。这里比较str2字符串“S”和str3字符串“I”

现在“S”的ASCII值是83,“I”的ASCII值是73,因此结果是10

第二种情况

result = str3.compareToIgnoreCase( str1 );
这里将str3与str1进行比较。这里,将str3字符串“I”与str1字符串“S”进行比较

现在“I”的ASCII值是73,“S”的ASCII值是83,因此结果是-10

第三种情况

result = str4.compareToIgnoreCase( str2 );
这里将str4与str2进行比较。在这里,除了str4中的“空格”和str2中的“e”字符外,所有字符都是相同的


现在“space”的ASCII值是32,“e”的ASCII值是101,因此结果是-69。

我建议看一看javadoc->我建议在从互联网上随机尝试代码之前先阅读java教科书。发布整个代码,结果是什么,str4?哎呀-没有看到。str4的结果是-69 str4的值是多少?
int result = str2.compareToIgnoreCase( str3 );
result = str3.compareToIgnoreCase( str1 );
result = str4.compareToIgnoreCase( str2 );