【问题标题】:Why don't we use parenthesis () when calling the Array.length method in Java? [duplicate]为什么我们在Java中调用Array.length方法时不用括号()? [复制]
【发布时间】:2021-12-09 00:34:50
【问题描述】:

当我们对字符串使用长度方法时,我们使用括号,例如:

String message = "Hello World";
System.out.println(message.length());

但是当我们对数组使用相同的方法时,我们不使用括号

int [] numbers = {1,2,3,4,5};
System.out.println(numbers.length);

我们在所有其他方法中都使用括号,但不是这个,这是为什么呢?

【问题讨论】:

  • 因为它不是一种方法。 length 是数组类的一个字段。

标签: java arrays methods


【解决方案1】:

这不是一种方法。它是一个成员变量。它可以像这样访问,因为它是公开的和最终的。由于它是最终的,因此无法更改,从而使数组无效。 这可以追溯到 java 的早期发展。

【讨论】:

  • 可以这样做,因为它的最终 - 不,因为它是公开的
  • @Kris 当然它需要是公开的——它可以公开,没有任何人试图改变它的风险,因为它是最终的。
  • @user16320675 答案现已更新。
【解决方案2】:

说明

为什么我们在Java中调用Array.length方法时不用括号()?

原因很简单。它不是方法,它只是一个公共字段


示例

就好像你会写一个这样的类:

public class MyArray {
    public final int length;

    ...
}

然后是类似的东西

MyArray array = ...
System.out.println(array.length);

(这是一个人为的例子,但你明白了)


详情

请注意,数组是直接在 JVM 中实现的,而不仅仅是简单的类length 也是如此。

但这些细节在实践中并不重要,语言设计者选择的语法是常规 public final int length 字段的语法。

【讨论】:

    猜你喜欢
    • 2020-08-17
    • 2016-12-28
    • 1970-01-01
    • 2018-10-26
    • 2019-10-21
    • 2014-02-19
    • 2013-06-26
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多