Nik*_*bak 12

String实现接口CharSequence,后者又定义length方法.你不能对变量做同样的事情,因为变量不能被抽象或覆盖.
正如其他人所说,Java正在大量使用接口.


Dan*_*iel 6

因为有权访问变量将允许您修改它,并打破String.

而且JIT编译器很聪明,可以为你内联getter,所以你实际上只是访问变量.

哦,array.length不是一个"真正的"对象变量,但更像是一个语言功能,允许您访问数组的长度.因此,它不可写.另一方面,字符串是"普通"对象,并且在编译器中没有特殊处理(尽管在源代码中使用字符串文字时它们是在运行时稍微构建的).