在寻求帮助之前,如果这是一个重复的问题或错误的问题,我真的很抱歉,因为我不知道该搜索什么。
在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类型。
我想知道什么是数组对象的类,它应该返回数组对象的类。
答案 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[];
}