【问题标题】:String.length() vs Array.length [duplicate]String.length() 与 Array.length [重复]
【发布时间】:2012-08-18 09:53:27
【问题描述】:

可能重复:
Why is String.length() a method?
Java - Array's length property

对于为什么 String 具有长度方法但 Array 具有可变长度,是否有特定的设计/性能原因?

【问题讨论】:

  • 它不是最终的公共属性,因为存在不同的实现——事实上,有迹象表明,在不久的将来,当前的实现可能确实会被一个没有特殊 length 字段的实现所取代。
  • 如果你有一个指向字符串的 CharSequence 引用变量,如果长度是一个字段,你就不能得到它的长度,因为字段不是由接口定义的。但是数组没有实现接口,所以长度是一个字段就可以了。

标签: java programming-languages


【解决方案1】:

Java 中没有 Array 类(反射除外)。数组是 Java 中的一种“原语”,其使用规则与声明的类不同。

当然可以在数组上定义length() 方法,但设计者希望将length 保留为属性而不是伪方法。 (在某种程度上,这可能使早期的 Java 实现变得更容易。)原因在某种程度上已被历史所掩盖。

(一个更好的问题是为什么 Java 无法决定是否将概念称为“长度”、“计数”或“大小”——我总是在找到正确的聚合之前尝试所有三个类。)

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2019-11-16
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多