【发布时间】:2015-03-07 20:25:45
【问题描述】:
public class CustomString {
public char value[];
public int offset;
public int count;
public int hash;
}
CustomString one = new CustomString();
char valueOne[] = {'A','N'};
one.count = 2;
one.hash = 0;
one.offset = 0;
one.value = valueOne;
CustomString two = new CustomString();
char valueTwo[] = {'F','A','N'};
two.count = 3;
two.hash = 0;
two.offset =1;
two.value = valueTwo;
compareTo(one,two)
String的compareTo方法:
public static int compareTo(CustomString one, CustomString two) {
int len1 = one.count;
int len2 = two.count;
int n = Math.min(len1, len2);
char v1[] = one.value;
char v2[] = two.value;
int i = one.offset;
int j = two.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;
}
由于对于“FAN”,我使用偏移量为 1,我认为“FAN”的“AN”将与“AN”进行比较并返回 0。但它没有因为 String 的 compareTo 返回 @987654325 @
我的问题是,offset 在compareTo 方法中的目的是什么?偏移量始终为 0。您能否举个例子,为其中一个或两个设置不同的偏移量?
【问题讨论】:
-
你说的是java.lang.String吗?什么是自定义字符串?这是您的代码还是其他人的代码?
-
是的。我在谈论 java.lang.String。我想通过将偏移量更改为 0 以外的值来调试
compareTo。所以我写了一个自己的类CustomString来模拟 @987654330 @.
标签: java string offset compareto