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源码当中就行能,百思不得其解啊。。。还请各位大神赐教
1 回答
旧少年
TA贡献2条经验 获得超1个赞
个人一点拙见:
在Java中关于Java.lang.String类的源代码中有这样一个字段的说明
/** The value is used for character storage. */ private final char value[];
表明String类的内部实现用的就是字符数组存储字符串的,而且它是一个私有的类成员变量,因此因此xx.value是无法在外部调用到的,而comparaTo是String类的成员方法,自然可以调用到。
添加回答
举报
0/150
提交
取消