Java Array对象返回数组的类型而不是Array

时间:2013-06-08 17:52:02

标签: java arrays nullpointerexception primitive

在寻求帮助之前,如果这是一个重复的问题或错误的问题,我真的很抱歉,因为我不知道该搜索什么。

在java中使用数组时,有一件事情困扰着我。 这是代码:

String []stt = new String[5];
stt[0].length();  //of course NullPointerException because uninitialized.
System.out.println(stt.getClass()); //it should return class of array instead of String.

根据上面的代码,到目前为止还没有创建String对象,stt应该是Array类型而不是String类型,实际上stt中的元素应该是String类型。

我想知道什么是数组对象的类,它应该返回数组对象的类。

5 个答案:

答案 0 :(得分:3)

引用指向的类是String数组。如果你想测试以查看该引用是否是数组的一部分,那么有一种特殊的方法,isArray

System.out.println(stt.getClass().isArray());

正如其他一些人所指出的那样,仔细看看你可以看到输出的区别只是使用

class [Ljava.lang.String; // Array of String
class java.lang.String    // String

答案 1 :(得分:2)

运行此代码:

String []stt = new String[5];
System.out.println(stt.getClass());

打印

class [Ljava.lang.String;
      ^^

开头的[L表示Array,其余的显然是String。 Together:String array。

答案 2 :(得分:2)

语句System.out.println( stt.getClass() );实际上返回一个数组。如果您已经敏锐地观察到,则输出为class [Ljava.lang.String;但不是class java.lang.String[表示Array的代表。

要检查输出是否为数组,您可以尝试返回stt.getClass().isArray()的徽标boolean

答案 3 :(得分:0)

Java中的数组不是单独的类型。因此,String s数组的类仍为String。类Array只是用于处理数组的静态方法的集合,您无法创建它的实例。正如在其他答案中指出的那样,您可以使用isArray中的Class方法来确定对象是否为数组。

答案 4 :(得分:0)

或者,您可以使用instanceof

boolean isStringArray(Object o){
return o instanceof String[];
}