数组中的长度和String中的length()

时间:2012-10-17 17:31:03

标签: java arrays string

当我们谈论数组时,为什么长度是一个数据字段?当我们在Java中讨论String时,为什么 length()?的意思是:

int a[10] = {1,2,3,4,5,6,7,8,9,10};
String str = "foo";
int a_len = a.length;
int str_len = str.length();

为什么长度不是数组的函数,反之亦然?

3 个答案:

答案 0 :(得分:9)

简单地说:这就是它的方式,以及它一直以来的方式。

JLS section 10.7中指定数组具有公共最终length字段。为了保持一致性,它可以被指定为一种方法 - 但它并不是......同样String 可以做出实施决定以获得公开最终{{ 1}}字段 - 但同样,它不会那样。

自1.0以来存在一些不一致的情况 - 显然这些事情在发布后确实无法改变......

答案 1 :(得分:4)

String实现CharSequence因此length需要成为一种方法,因为接口只能指定方法。

数组不需要实现任何接口,因此在这种情况下length被实现为公共final字段,以避免额外的方法调用开销。

修改

正如Hot Licks在下面指出的那样,{1.4}之前不存在CharSequence。尽管CharSequence显然不是这种设计选择背后的原因(因为它不存在),但选择这种设计仍然有意义,因为String可能需要在未来实现新的接口。

答案 2 :(得分:0)

它被认为是变量而不是方法。这就好像你创建了一个类并且表示公共静态int num以及稍后在一个方法中告诉num等于全局