如何创建数组(Java)

时间:2019-05-09 01:59:08

标签: java arrays

我知道对象是类实例或数组。

这意味着在创建数组时,不会创建真实类的实例(这些类是动态创建的,并且未在源代码中定义)。

根据JLS https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.8

  

每个数组都有一个关联的Class对象,与其他所有具有相同组件类型的数组共享。

     

尽管数组类型不是类,但每个数组的Class对象   就像:

     
      
  • 每种数组类型的直接超类都是Object。

  •   
  • 每种数组类型都实现接口Cloneable和   java.io.Serializable。

  •   

Class对象是否与动态创建的类相关联?

为什么Class对象允许数组继承java.lang.Object?

编辑:

澄清我的问题。

根据https://stackoverflow.com/a/2267807/11306652

  

”数组是对象,因为它们继承了java.lang.Object,   这些类是动态创建的,作为   语言。它们未在源代码中定义。”

此外,

https://stackoverflow.com/a/10674614/11306652

  

“ [I”是用英语称呼的“   int”。该类是“完全公民身份” Java类,它对   Object的所有方法。唯一的区别是新语法   不同,它不支持Class的newInstance()方法。

     

类“ [I”,“ [C”等)在JVM中是“预定义的”-在那里   没有与之相对应的.class文件。 Java也将隐式地   即时创建”

我的理解是否正确,当创建数组时,JVM动态创建一个定义数组对象的“数组类”(以Object为超类)?此外,还有一个与动态创建的“数组类”关联的Class对象。

0 个答案:

没有答案