String的长度为成员函数。而array的长度为final字段

时间:2013-08-22 13:38:39

标签: java arrays string declaration

这是关于java编程的。为什么Java开发人员将length()作为String Object的成员函数,而对于数组引用变量,他们将它作为final字段?... 如果那不是真的令人困惑那么我的下一个问题就像在任何函数中一样,引用是存储在Stack上的局部变量。那么我们如何能够在数组引用上引用字段。 如果我出错了,请纠正我..

3 个答案:

答案 0 :(得分:0)

数组的length甚至不是一个字段(它不能是因为数组不是真正的对象)。这是一个“伪属性”,如class中的Object.class。它是编译器识别的语法元素,并转换为一些原始操作。

答案 1 :(得分:-1)

如果您看到字符串的source code,那么当您将字符串传递给字符串constructor.

时会出现
  public More ...String(char value[]) {
193         int size = value.length;
194         this.offset = 0;
195         this.count = size;
196         this.value = Arrays.copyOf(value, size);
197     }

将数量计为final禁止初始化构造函数外部的count

答案 2 :(得分:-1)

“为什么”问题始终是最难回答的问题。历史原因主要来自阵列的特殊处理。我认为属性应限于简单的get和set,只有在没有副作用的情况下,否则使用函数。