comparetoignorecase(compareToIgnoreCase)
大家帮我解答一下java中比较的疑问
括号中music的位置大于music[i]的位置时返回负值,括号中music的位置小于music[i]的位置时返回正值,不知道这样说能解答你的困惑么?自己试一下 就OK了。
java 中这句(musics[i].compareToIgnoreCase(music)>0 什么意思啊
举个例子:如果String music[1] = “music” ;
String music = "aaaaaa";( 或者String music = "AAAAAA"是一样的,因为它是忽略大小写的)
那么(musics[i].compareToIgnoreCase(music)0返回的就是true;
如果String music = "n";(String music = "N"是一样的)那么返回就是false;
刚刚接触java。。这里看不懂。。麻烦大虾们解释下。。
compareToIgnoreCase:比较两个字符串不区分大小写,就是按照字母表顺序比较,你懂得。如果books[i]大得话,就返回一个正数,相等的话返回0,小得话返回负数。
Line:是一行,就是把一行作为一个字符串读取进来
if(musics[i].compareToIgnoreCase(music)>0) 请问这个代码比较的到底是 musics[i]>music
先比较
musics[i].compareToIgnoreCase(music),这个结果应该返回的是一个数字,
然后比较上面得到的数字和0的比较结果
java中compareToIgnoreCase大小是怎么比较的
String类里的compareToIngoreCase是这样的:
public static final ComparatorString CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
public int compareToIgnoreCase(String str)
{
return CASE_INSENSITIVE_ORDER.compare(this, str);
}
private static class CaseInsensitiveComparator
implements ComparatorString, java.io.Serializable {
// use serialVersionUID from JDK 1.2.2 for interoperability
private static final long serialVersionUID = 8575799808933029326L;
public int compare(String s1, String s2) {
int n1=s1.length(), n2=s2.length();
for (int i1=0, i2=0; i1n1 i2n2; i1++, i2++) {
char c1 = s1.charAt(i1);
char c2 = s2.charAt(i2);
if (c1 != c2) {
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {
c1 = Character.toLowerCase(c1);
c2 = Character.toLowerCase(c2);
if (c1 != c2) {
return c1 - c2;
}
}
}
}
return n1 - n2;
}
}
这是JDK源文件里的
比较的方法就是把两个String截成一个一个char的比较,每个char比较另一个String对应位置里的char,如果两个char都换成大写和都换成小写是一样的话,比较下一个,直到找到两个不一样的char,都转换成小写,然后return相差(ASCII里的值)。如果其中一个或者两个String都比较完了还没有同样的char的话,那就return两个String的长度差距。
其实这个代码还蛮简单的,自己稍微看看就明白了
compareTo 和comparetoIgnorecase有啥区别
compareTo:比较
compareToIgnoreCase:比较,忽略大小写
如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。
例:字典的顺序:0123456ABCabc 大写字母在小写字母前
String query = new String();
String number = new String();
int i = 0;
query = "a";
number = "1";
i = query.compareTo("A"); (a在A之后,返回大于0的值)
i = number.compareTo("2"); (1在2之前,返回小于0的值)