String类中的compareTo函数为什么能够直接使用xx.value值的方式?

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源码当中就行能,百思不得其解啊。。。

还请各位大神赐教


闲逛的蚂蚁
浏览 2491回答 1
1回答

旧少年

个人一点拙见: 在Java中关于Java.lang.String类的源代码中有这样一个字段的说明   /** The value is used for character storage. */     private final char value[];表明String类的内部实现用的就是字符数组存储字符串的,而且它是一个私有的类成员变量,因此因此xx.value是无法在外部调用到的,而comparaTo是String类的成员方法,自然可以调用到。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java