当前位置: 首页 > 面试题库 >

Java数组是原始类型还是对象(或完全其他的对象)?

郎恺
2023-03-14
问题内容

这个问题基本上是不言而喻的。我无法找到用于数组的API(除了此Arrays之外,但这仅定义了一堆用于处理实际数组的静态辅助函数)。如果没有它的类,这似乎表明数组不能是Object

然而,事实上,一个阵列具有公共领域,如length和方法,它可以调用像.equals().clone()似乎暗示(强烈)相反完整。

对原始数组的奇数表示和行为有何解释?

作为说明,我现在尝试在.clone()数组的方法上使用“开放实现” Eclipse功能,希望我能够查看定义此方法的位置和方式(因为它说int []覆盖了它)对象),但实际上导致整个Eclipse冻结并崩溃…


问题答案:

每个数组类型都有一个类,因此有一个类int[],有一个类Foo[]。这些类是由JVM创建的。你可以通过访问它们int[].classFoo[].class。这些类的直接超类是Object.class

public static void main(String[] args)
{
    test(int[].class);
    test(String[].class);
}

static void test(Class clazz)
{
    System.out.println(clazz.getName());
    System.out.println(clazz.getSuperclass());
    for(Class face : clazz.getInterfaces())
        System.out.println(face);
}

还有一个编译时子类型规则,如果A是的子类型BA[]是的子类型B[]



 类似资料:
  • 这个问题基本上是不言自明的。我还没有找到一个数组的应用编程接口(除了这个数组,但这只是定义了一堆用于处理实际数组的静态助手函数)。如果没有它的类,这似乎表明数组不可能是一个。 然而,数组有公共字段,比如,以及它可以调用的方法,比如和似乎(非常强烈地)表明了完全相反的观点。 原语数组的奇怪表示和行为的解释是什么? 注意,我刚才试图在数组的方法上使用“开放实现”Eclipse特性,希望我能够看看这个方

  • 问题内容: 如果你有一个具有原始类型(例如Byte,Integer,Char等)的Java对象数组。有没有一种巧妙的方法可以将其转换为原始类型的数组?特别是可以做到这一点,而不必创建新的数组并遍历内容。 因此,例如 将其转换为最简洁的方法是什么 不幸的是,在Hibernate和我们无法控制的某些第三方库之间进行接口连接时,这是我们经常要做的事情。看来这是一个很普通的操作,所以如果没有捷径,我会感到

  • 问题内容: 我是Kotlin的新手,正在玩数据类型。我选择了一个类型,然后尝试通过说来将其强制转换为a ,这在Java中是有效的(从语法上讲,但这是正确的)。但是,此操作失败,表示无法将Int强制转换为Double。我假设这是因为它是基于Integer类而不是原始的int数据类型构建的。我是正确的,最有价值的方法是什么?有一个功能,但这似乎效率低下且笨拙。 问题答案: 我花了一个类型,然后试图将它

  • 我是科特林的新手,我在玩数据类型。我取了一个<code>Int</code>类型,然后尝试将其转换为<code>Double</code>,将<code>num表示为Double>/code,这是一个在java中有效的调用(非语法上,但你明白了)。然而,这失败了,表示Int不能强制转换为Double。我假设这是因为它是基于Integer类而不是原始int数据类型构建的。我说得对吗?什么是最有效的价

  • 问题内容: 在我的项目中,我需要在运行时在数据库之间切换。我尝试使用Hibernate,但是卡在一个地方,我需要在数据库中映射对象和表。问题是,我有几个带前缀的表:documents2001,documents2002 …据我了解,我在运行时无法将类与表进行映射。我尝试使用iBatis,但问题出在运行时更改数据库。在iBatis中,这很难做到。 也许一些建议,我应该使用什么? 我的要求: 能够在运

  • 问题内容: 我正在使用.net Web API来获取json并将其返回给前端以获取角度。json可以是对象或数组。我的代码当前仅适用于数组,而不适用于对象。我需要找到一种方法来尝试解析或确定内容是否是对象或数组。 这是我的代码 以上可能不是最好的方法。它就是我现在所在的位置。 问题答案: 使用Json.NET,您可以这样做: