首先字符串是不能比较大小的,如果你非要比较这两个字符串里面的值,也就是"2"和"11",那就是说比较的是字符串里面的数值类型的值,可以这样:
//字符串里面数值的值还是不明白。不能直接比较???
追答字符串根本就没有大小这个属性,只有长度大小和字母顺序的大小,你想想,两个字符串"abc","def",他们比较大小你觉得回得出什么结果呢,就好比你说两个茄子比较谁跑得快,根本是无法比较的。
追问String a = "2";
String b = "11";
int result = a.compareTo(b);
System.out.println(result);
运行结果result是1。这怎么解释???
compareTo()方式是Comparable接口的方法,实现Comparable接口就能调用compareTo()方法,而String类是实现了这个接口的,所以可以调用compareTo()方法,为了直观说明问题,这里是String的compareTo()方法的JDK源代码,他说明了什么,说明了比较的是按照字典顺序比较字符串的大小。这下明白了吧。
public int compareTo(String anotherString) {
int len1 = count;
int len2 = anotherString.count;
int n = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
if (i == j) {
int k = i;
int lim = n + i;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
} else {
while (n-- != 0) {
char c1 = v1[i++];
char c2 = v2[j++];
if (c1 != c2) {
return c1 - c2;
}
}
}
return len1 - len2;
}
就是直接比较第一个字符就行吗?就拿我提问的这个例子,我运行后结果是1,就是因为2-1=1??
String a = "2";
String b = "11";
int result = a.compareTo(b);
System.out.println(result);
恩,是一个一个往下比的,第一个字符相同,就比第二个,直到有一个不同的。
追问好的我知道了 真心感谢
本回答被提问者采纳