我目前在高中的 AP 计算机科学课上,我在阅读中遇到了这个问题。
据我了解,.length()
是一种用于字符串的方法,但是为什么.length()
在应用于数组时不是一种方法?我知道它们是不同的对象,但为什么 Java 不只是另一种方法来查找数组的长度呢?
我很感激我得到的任何回应。谢谢!
我目前在高中的 AP 计算机科学课上,我在阅读中遇到了这个问题。
据我了解,.length()
是一种用于字符串的方法,但是为什么.length()
在应用于数组时不是一种方法?我知道它们是不同的对象,但为什么 Java 不只是另一种方法来查找数组的长度呢?
我很感激我得到的任何回应。谢谢!
由于数组是在实例化时定义的固定长度,因此长度是类上的公共最终字段。无需将其设为方法,因为在运行时无需进行计算。
有关详细信息,请参阅 Java 规范的这一部分:http: //docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.7
现在,关于为什么他们没有提供获取值的访问器方法的设计问题没有指定。也许这是在设置任何其他约定之前完成的,这只是一个遗留问题。只有语言设计者会知道他们决定这样做的“为什么”部分。
数组在Java 语言规范 #10.7中定义。尤其:
数组类型的成员全部如下:
- 公共最终字段长度,其中包含数组的组件数。长度可以是正数或零。
- [...]
我无法回答为什么语言设计者选择了这种方法。
有趣的是,在作为 Java 的祖先的 Oak 规范中已经出现了这种情况。
我怀疑这是否有充分的技术原因。
我怀疑这是那些没有及早发现并在不破坏大量代码的情况下修复的小不一致之一。