Java 对象类中的长度字段

Java 对象类中的长度字段,java,arrays,object,variable-length,Java,Arrays,Object,Variable Length,对不起,如果以前有人问过这个问题。我对对象类的长度字段有一些疑问。如果我错了,请纠正我,每个类都会非法扩展对象类,这就是为什么我们可以访问equals、clone、hashcode等方法的原因 所以我的问题是,当我们创建任何数组(例如int[],foo[]的数组)时,我们可以访问对象类的长度字段,但当我们创建任何对象时,我们看不到长度变量,为什么?对象类没有定义长度字段,并且对象没有长度字段 长度字段仅为数组类型定义。各国: 在Java编程语言中,数组是§4.3.1中的对象,是动态创建的,可以分

对不起,如果以前有人问过这个问题。我对对象类的长度字段有一些疑问。如果我错了,请纠正我,每个类都会非法扩展对象类,这就是为什么我们可以访问equals、clone、hashcode等方法的原因

所以我的问题是,当我们创建任何数组(例如int[],foo[]的数组)时,我们可以访问对象类的长度字段,但当我们创建任何对象时,我们看不到长度变量,为什么?

对象类没有定义长度字段,并且对象没有长度字段

长度字段仅为数组类型定义。各国:

在Java编程语言中,数组是§4.3.1中的对象,是动态创建的,可以分配给Object§4.3.2类型的变量。[…]数组的长度作为最终实例变量长度提供

长度字段是隐式定义的。并没有JavaAPI类声明,您可以在其中看到定义的字段。长度字段通常由JVM magic实现;e、 g.在对象标题中。甚至还有一个特殊的字节码数组长度来访问它

。。。当我们创建任何对象时,我们看不到长度变量,为什么

为什么??因为它没有

对象类没有定义长度字段,并且对象没有长度字段

长度字段仅为数组类型定义。各国:

在Java编程语言中,数组是§4.3.1中的对象,是动态创建的,可以分配给Object§4.3.2类型的变量。[…]数组的长度作为最终实例变量长度提供

长度字段是隐式定义的。并没有JavaAPI类声明,您可以在其中看到定义的字段。长度字段通常由JVM magic实现;e、 g.在对象标题中。甚至还有一个特殊的字节码数组长度来访问它

。。。当我们创建任何对象时,我们看不到长度变量,为什么


为什么??因为它没有

据我所知,数组的长度是初始化数组时设置的大小变量,它给出了数组的实际容量。由于数组的容量在初始化后无法更改,所以对象[]arr=新对象[2];System.out.lengtharr.length工作正常。公共最终字段长度,包含数组的组件数。长度可以是正的,也可以是零。

据我所知,数组的长度是初始化数组时设置的大小变量,它给出了数组的实际容量。由于数组的容量在初始化后无法更改,所以对象[]arr=新对象[2];System.out.lengtharr.length工作正常。公共最终字段长度,包含数组的组件数。长度可以是正的,也可以是零。

您必须注意继承的方向。您可能知道,继承就是定义一种关系。如果基类定义了字段、方法,则可以在派生类中访问它们

因此,在Java中,任何整数都是一个对象。或者,任何类型的数组都是对象

相反方向的情况并非如此。任意对象不是数组!意思:如果您创建了一个对象,比如bar=newobject,那么bar就没有数组的任何属性;因为酒吧是一个物体;但不是数组

所以你们不能在对象上找到长度,因为对象不是数组

但当然,如果一个物体真的是其他东西,比如:

int[] numbers = { 1, 2, 3 };
Object foo = numbers;
然后您可以随时进行演员阵容调整,如:

int[] anotherRefToNumbers = (int[]) foo;

编辑:只是给一个不同的视角。如果你坐下来在一张纸上画一个圈;这个圆也是一个形状,或者随便你怎么称呼它。但不是所有你能画下来的形状。。。将是一个圆。

您必须注意继承的方向。您可能知道,继承就是定义一种关系。如果基类定义了字段、方法,则可以在派生类中访问它们

因此,在Java中,任何整数都是一个对象。或者,任何类型的数组都是对象

相反方向的情况并非如此。任意对象不是数组!意思:如果您创建了一个对象,比如bar=newobject,那么bar就没有数组的任何属性;因为酒吧是一个物体;但不是数组

所以你们不能在对象上找到长度,因为对象不是数组

但当然,如果一个物体真的是其他东西,比如:

int[] numbers = { 1, 2, 3 };
Object foo = numbers;
然后您可以随时进行演员阵容调整,如:

int[] anotherRefToNumbers = (int[]) foo;

编辑:只是给一个不同的视角。如果你坐下来在一张纸上画一个圈;这个圆也是一个形状,或者随便你怎么称呼它。但不是所有你能画下来的形状。。。将是一个圆。

因为长度没有在ObjectSame中定义,所以你看不到asdf变量或foobar变量。那么长度字段是在哪里定义的呢?因为长度没有在ObjectSame中定义,所以你看不到asdf变量o
r foobar变量。那么长度字段定义在哪里?那么长度字段定义在哪里?@FaisalAhmed在动态创建的数组类上。请参阅:在Java编程语言中,数组是§4.3.1中的对象,是动态创建的,可以分配给Object§4.3.2类型的变量。[…]数组的长度可作为最终实例变量长度使用。它在哪里声明?无处它是>>隐式的Hanks Stephen它真的很有用所以在哪里定义了长度字段?@FaisalAhmed在动态创建的数组类上。请参阅:在Java编程语言中,数组是§4.3.1中的对象,是动态创建的,可以分配给Object§4.3.2类型的变量。[…]数组的长度可作为最终实例变量长度使用。它在哪里声明?无处汉克斯·斯蒂芬这真的很有帮助我很了解这位兄弟。我的问题是为什么我们在创建普通对象时看不到长度?我从Stephen C那里得到了答案。现在我在想它的隐含定义是什么?我非常了解这位兄弟。我的问题是为什么我们在创建普通对象时看不到长度?我从Stephen C那里得到了答案。现在我在想它隐式定义在哪里?你能更清楚地定义这个术语吗?sir Object不是数组。你能更清楚地定义这个术语吗?sir Object不是数组。