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源码当中就行能,百思不得其解啊。。。
还请各位大神赐教
旧少年