在Java中,char[]是一个对象吗?

4

我对Java还不熟悉,但如果我理解正确,char是一个原始类型。

执行 char temp 和 temp.hashCode() 将无法编译通过,但执行 char[] temp2 = new char[2] 和 temp2.hashCode() 可以编译并执行。

这是否意味着 char[] 是一个对象?

6个回答

16

一个char是原始类型,但是一个char类型的数组是一个对象。

有一种方法可以区分它们,那就是通过动态实例化来判断:

final Object charArray = Array.newInstance(Character.TYPE, 5);
System.out.println(charArray.getClass().getComponentType());

输出:

char

(Character.TYPE 是对原始类 char 的引用。另一种访问该类的方式是通过 char.class)


1
这不是唯一访问该类的方式。你可以使用 char.class - whiskeysierra
@Willi,没错,忘了这个。我已经编辑了我的答案。 - Sean Patrick Floyd
另一个有趣的点是,char.class只是对Character.class的引用(根据http://www.docjar.com/html/api/java/lang/Character.java.html)。所以我想我们两个都是正确的 ;) - whiskeysierra
对于Character.TYPE的引用。 - Sean Patrick Floyd

7
是的。所有数组都是对象,即使是基本类型的数组也是如此。

0

是的,在Java中所有的数组都是对象。


0

是的,每种类型的数组都是一个对象。


0

是的,在Java中,数组是对象。


0
一个数组不仅仅是几种原始类型,它还有一个“length”字段。原始类型没有字段。另一个将数组与原始类型区分开的事情是它们是引用,因此必须进行垃圾回收。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接