猿问

java中的String的compareTo()方法问题

public void inputMoreTimes(){
String result ="hello,word!";
String result2="bhello,w";
System.out.println(result.compareTo(result2));
System.out.println("hello".compareTo("hello,"));

}
为什么两个值不一样? 一个是6 ,一个是-1

不负相思意
浏览 414回答 5
5回答

慕的地8271018

楼主请看一下java api中对String类中compareTo方法的解释,1.result.compareTo(result2)) 是根据第一个红框标注的方法比较的,即返回这两个字符串在位置 k 处两个char 值的差2."hello".compareTo("hello,")则是根据第二个红框标注的方式进行比较的,即返回这两个字符串长度的差

缥缈止盈

String 是字符串,它的比较用compareTo方法,它从第一位开始比较,如果遇到不同的字符,则马上返回这两个字符的ascii值差值..返回值是int类型第一个是“hello,word!”与"bhello,w"进行比较,第一位就不相同,b和h在ascii码中相差6;第二个是“hello”和“hello,”,如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值

慕田峪4524236

public int compareTo(String anotherString)方法是按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object)返回 true 时才返回 0。这是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如果它们在一个或多个索引位置上的字符不同,假设k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 <运算符确定),其字典顺序在其他字符串之前。在这种情况下,compareTo 返回这两个字符串在位置 k处两个char 值的差,即值:this.charAt(k)-anotherString.charAt(k)如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo返回这两个字符串长度的差,即值:this.length()-anotherString.length()字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object)返回 true 时才返回 0。这是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如果它们在一个或多个索引位置上的字符不同,假设k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 <运算符确定),其字典顺序在其他字符串之前。在这种情况下,compareTo 返回这两个字符串在位置 k处两个char 值的差,即值:this.charAt(k)-anotherString.charAt(k)如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo返回这两个字符串长度的差,即值:this.length()-anotherString.length()&nbsp;

白猪掌柜的

public int compareTo(String anotherString) {int len1 = value.length;int len2 = anotherString.value.length;int lim =&nbsp;Math.min(len1, len2);char v1[] = value;char v2[] = anotherString.value;int k = 0;while (k < lim) {char c1 = v1[k];char c2 = v2[k];if (c1 != c2) {return c1 - c2;}k++;}return len1 - len2;}这是string的比较方法代码。第一个返回6因为比较第一个字符用'h'-'b'=6,第二个因为hello这几个字符都一样,所以返回第一个字符串的长度-第二个字符串长度5-6=-1
随时随地看视频慕课网APP

相关分类

Java
我要回答