昨天有人问我,java数组到底是不是一个类呢?初听到这个问题,第一反应肯定是啊,无论从java数组的定义方式,还是从对面向对象的理解。但是细细想想,却不是那么回事。
按照通常的理解来说,java是一种纯面向对象语言,所以一切皆对象,对于所有的类型都是对象或者对象的变型。但是数组和其它数据类型却不是一般的对象。比如一般的对象定义是这样的:
Myclass c1 = new Myclass();
而数组定义是这样的:
int a[] = new int[50];
这样就看到一个问题,数组在声明时是没调用构造函数的。java中对象的定义都需要调用构造函数的,而数组却没有,这就表明了数组不是类,或者说不是一个简单的类。写了一个简单的程序测试了一下java中数组的相关函数。
还可以分别打印普通类和数组类的实例看一下结果:
public class test {
public static void main(String[] args)
{
test t1 = new test();
test[] arr=new test[9];
Class clazz = test[].class;
System.out.println(clazz);
Class clasz = test.class;
System.out.println(clasz);
}
}
结果是:
可以看出数组类和普通类是不一样的。
但是数组类又有自己的父类,打印数组类的父类。
System.out.println(clazz.getSuperclass());
所以说数组类可以算作是一种特殊的类。