String类的compareTo方法如下:
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;//通过value字段直接拿到了anotherString的字符数组
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}为什么这里可以直接使用anotherString.value的方式获取的字符串里面的字符数组?这个value字段不是private的么,而且我们自己仿照这样用xx.value来获取某个字符串的字符数组也是不行的,只能使用toCharArray函数来获取,为什么String源码当中就行能,百思不得其解啊。。。
还请各位大神赐教
旧少年