本帖最后由 ㏒假™面具 于 2015-3-8 19:09 编辑
- <div class="blockcode"><blockquote>public class Test {
- public static void main(String[] args) {
- String str = "Hello";
- String str_1 = "Hel";
- int a = str.compareTo(str_1);
- System.out.println(a);
- }
- }
- public int compareTo(String anotherString) {
- int len1 = value.length;
- int len2 = anotherString.value.length;
- int lim = 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;
- }
复制代码
一直疑惑为什么“hello”和“hel”比较结果为2.今天看源码终于发现,String类将接收的字符串转换成了字符数组然后,逐个比较元素。当元素相同仅长度不同时,返回长度差。 |
|