Java 像原始数据类型一样的整数数组如何具有字段';长度';?
当一个原始数据类型(如整数数组)不是一个类时,它怎么可能有一个字段“length”?e、 gJava 像原始数据类型一样的整数数组如何具有字段';长度';?,java,arrays,Java,Arrays,当一个原始数据类型(如整数数组)不是一个类时,它怎么可能有一个字段“length”?e、 g int a[] = {1,2,3,4}; int j = a.length; System.out.println(j); 简单:数组不是原语。相反,它们是引用类型的对象 体验这种情况的另一种方法是查看如果将int数组传递到方法中并从方法中修改数组的内容会发生什么。您将看到,这也将修改原始数组对象,所有引用类型(非基元)的变量都会这样做。数组是引用类型的对象,而不是基元 当一个原始数据类型(如整数数组
int a[] = {1,2,3,4};
int j = a.length;
System.out.println(j);
简单:数组不是原语。相反,它们是引用类型的对象
体验这种情况的另一种方法是查看如果将int数组传递到方法中并从方法中修改数组的内容会发生什么。您将看到,这也将修改原始数组对象,所有引用类型(非基元)的变量都会这样做。数组是引用类型的对象,而不是基元 当一个原始数据类型(如整数数组)不是一个类时,它怎么可能有一个字段“length” 其他答案解释了数组在Java中不是原始数据类型 虽然数组类型没有声明为类,但它在许多方面与类类似。例如:
- 每个数组类型都有
作为其隐式超类java.lang.Object
- 数组实例由引用表示,并且可以(在大多数情况下)保持状态
- 数组类型有方法;i、 e.
声明的方法,以及对象
- 您可以对数组实例调用
,以获取其getClass()
对象Class
Java语言设计者决定数组的长度应建模为一个只读字段,名为
length
,其类型为int
。这就是它的样子(根据语言语法),这就是它的行为方式
“长度”字段的“不同程度”仅在实现级别上明显可见:
字段在数组对象的对象标头中表示,并且length
- 有一个特殊的字节码用于访问数组对象的长度(ARRAYLENGTH-字节码190)
类
属性。@Ashwyn:数组就像一个空鸡蛋盒。不要把它和鸡蛋混淆——和它所含的东西混淆!长度是一种方法吗?你确定吗?长度不是一个方法,而是一个字段;如果它是一个方法,它的语法应该是length()。另一方面,如果我们处理字符串,length()是一个方法<代码>对象的实例返回true。您还可以objecta=newint[]{1,2,3,4}代码>因为所有数组都是对象。