【问题标题】:Why Java's String has the method length() rather than property length (like an array?) [duplicate]为什么 Java 的 String 有方法 length() 而不是属性长度(如数组?)[重复]
【发布时间】:2014-11-09 12:54:49
【问题描述】:

Java 有不可变的字符串,所以它的初始化大小永远不会改变(就像数组的大小)。问题是 - 如果大小永远不会改变,为什么 Java 需要调用方法 length() 而不是像数组中的属性 length?是length()

【问题讨论】:

  • 因为它是这样定义的。更大的问题是为什么数组具有length 只读属性,而不是length() 方法,因为它们是“只是对象”,就像字符串一样。
  • 另一个相同的问题是这个:stackoverflow.com/questions/14856327/…
  • 并非每件事都必须有合理的理由。 java设计者可能从来没有想过,或者是受到了月相的影响,他以不同的方式设计了一个API。
  • @SiyuanRen - 是的,很多决定都涉及到原始 Java 的设计。其中一些已被证明不太理想,但情况总是如此。
  • 我觉得你假设 getter 方法比属性读取更好。这是为什么?这就像不必要的方法包装

标签: java string


【解决方案1】:

因为length()定义在CharSequence接口中,由String实现。接口不能在 Java 中定义属性。此外,这使其更易于与其他类型互换。

在许多方法中,您可能只依赖CharSequence 接口而不是真正的String,然后您可以使用CharBufferSegmentStringStringBufferStringBuilder 的实例在调用站点中。

另请参阅:CharSequence 文档。

【讨论】:

  • java.lang.String 早于CharSequence 很多年。
猜你喜欢
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 2016-07-23
  • 2016-06-22
  • 2011-07-23
相关资源
最近更新 更多