当我们对字符串使用length方法时,我们会使用括号,如:
String message = "Hello World";
System.out.println(message.length());
但是当我们对Arrays使用相同的方法时,我们不使用括号
int [] numbers = {1,2,3,4,5};
System.out.println(numbers.length);
我们在所有其他方法中都使用括号,但在这个方法中没有,为什么会这样?
它不是一个方法。它是一个成员变量。它可以像这样访问,因为它是公共的和最终的。由于它是最终的,所以不能更改它,从而使数组无效。这可以追溯到java的早期。
说明
为什么在Java中调用Array.length方法时不使用括号()?
原因很简单。它不是一个方法,只是一个公共字段。
示例
就像你会写一个这样的类:
public class MyArray {
public final int length;
...
}
然后像
MyArray array = ...
System.out.println(array.length);
(这是一个人为的例子,但你明白了)
详细信息
请注意,数组是直接在JVM中实现的,而不仅仅是类似的简单类。length
也是如此。
但这些细节在实践中并不重要,语言设计者选择的语法是常规public final int length
字段的语法。