繁体   English   中英

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

[英]length in arrays and length() in String

为什么长度 ,当我们谈论阵列和长度()当我们谈论Java中的字符串数据字段? 手段:

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();

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

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

JLS第10.7节中规定,数组具有公共最终length字段。 为了保持一致性,它本来可以被指定为一种方法 - 但它只是不是......同样String 可以做出一个实现决定,有一个公共的最终length字段 - 但同样,它不会那样。

有一些不一致的东西,自1.0以来幸存下来 - 显然这些东西在发布后真的无法改变......

String实现CharSequence ,因此在这种情况下length需要是一个方法,因为接口只能指定方法。

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

编辑:

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

它被认为是变量而不是方法。 就好像你创建了一个类,然后说一个公共静态int num,后来在一个方法中告诉num,这个全局等于某个东西

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM