1

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

在 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 类型。

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

4

5 回答 5

3

引用所指向的类是一个字符串数组。如果您想测试该引用是否是数组的一部分,那么有一个特殊的方法,isArray.

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

正如其他一些人指出的那样,仔细观察,您可以看到输出的差异,只需使用

class [Ljava.lang.String; // Array of String
class java.lang.String    // String
于 2013-06-08T17:58:54.273 回答
2

运行此代码:

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

印刷

class [Ljava.lang.String;
      ^^

[L开头的意思是Array,其余的显然是String 。一起:字符串数组。

于 2013-06-08T18:01:11.320 回答
2

该语句System.out.println( stt.getClass() );实际上返回一个数组。如果你仔细观察,输出是class [Ljava.lang.String;但不是class java.lang.String[表示 的表示Array

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

于 2013-06-08T18:03:07.853 回答
0

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

于 2013-06-08T18:02:07.007 回答
0

或者,您可以使用instanceof

boolean isStringArray(Object o){
return o instanceof String[];
}
于 2013-06-08T18:02:49.773 回答