anotherString.value如何在java中的String类的源代码中工作?

时间:2016-03-30 01:44:35

标签: java string

最近我在Java中查看了String类的源代码。我发现像XXX.value经常出现。像这样:

    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;

            int k = 0;
            while (k < lim) {
            char c1 = v1[k];
            char c2 = v2[k];
            if (c1 != c2) {
                return c1 - c2;
            }
            k++;
        }
        return len1 - len2;
    }

但是值[]以这种方式声明:

private final char value[];

值[]从上面是私有的,anotherString.value如何工作?

1 个答案:

答案 0 :(得分:2)

OOP指定私有对象是该类的私有对象。

私有修饰符强制执行封装原则。

这个想法是'外部世界'不应该对String内部进程进行更改,因为String实现可能会随着时间而改变(并且您必须更改整个外部世界以修复实现中的差异 - 这几乎是不可能的)

当String实例访问其他String实例的内部时 - 您可以确定两个实例始终知道String的实现细节。如果更改了String进程内部的逻辑 - 您只需要更改String的代码。