当原始数据类型不是类时,整数数组类型如何具有字段'length'?例如
int a[] = {1,2,3,4};
int j = a.length;
System.out.println(j);
答案 0 :(得分:8)
简单:数组不是原语。相反,它们是引用类型的对象。
另一种体验方法是看看如果将int数组传递给方法并从方法中修改数组的内容会发生什么。您将看到这将修改原始数组对象,就像引用类型的所有变量(非原始数据)一样。
答案 1 :(得分:3)
如果原始数据类型不是类,那么整数数组类型如何具有字段'length'?
其他答案解释说,数组不是Java中的原始数据类型。
虽然数组类型未声明为类,但它在很多方面喜欢类。例如:
java.lang.Object
作为其隐式超类Object
和getClass()
以获取其Class
对象。如果你考虑这些,那么一个数组在某种程度上保持数组大小的状态在语义上是不一致的。
Java语言设计者决定将数组的长度建模为名为length
的只读字段,其类型为int
。这就是它的样子(根据语言语法),这就是它的行为方式。
“长度”字段的“不同性”仅在实施级别上显而易见:
length
字段表示在数组对象的对象标头中,答案 2 :(得分:0)
数组是引用类型的对象,而不是基元。