JAVA中,数组是对象吗?

要搞懂数组是不是对象,首先要搞清楚什么是对象?即对象的定义是什么? 从两个方面考虑:在较高层面讲,对象是某个类的具体实现,并且对象具有各种属性和一些特定的动作行为;在计算机层面讲,对象就是内存中的内存块,内存块中封装了一些数据,也就是对象的属性和方法。

在高层面看,数组不是某个类的具体实现,而是多个个体的集合。因此数组不是对象。 而在计算机层面看,数组是内存块,并且也封装了一些数组。因此数组是对象。

这样看的话,数组既可以是对象,也可以不是对象。再从代码中看:

int[] a = new int[4];
		//a.length;  //对属性的引用不能当成语句
		int len = a.length;  //数组中保存一个字段, 表示数组的长度
		
		//以下方法说明数组可以调用方法,java中的数组是对象.这些方法是Object中的方法,所以可以肯定,数组的最顶层父类也是Object
		a.clone();
		a.toString();

数组a可以调用Object中的一些属性和方法,这基本上可以认定,java中的数组也是对象,它具有java中其他对象的一些基本特点:封装了一些数据,可以访问属性,也可以调用方法。所以,数组是对象。

经验分享 程序员 微信小程序 职场和发展