最近我在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如何工作?
答案 0 :(得分:2)
OOP指定私有对象是该类的私有对象。
私有修饰符强制执行封装原则。
这个想法是'外部世界'不应该对String内部进程进行更改,因为String实现可能会随着时间而改变(并且您必须更改整个外部世界以修复实现中的差异 - 这几乎是不可能的)
当String实例访问其他String实例的内部时 - 您可以确定两个实例始终知道String的实现细节。如果更改了String进程内部的逻辑 - 您只需要更改String的代码。