首页 > 代码库 > 关于java中的数组

关于java中的数组

 

 

前言:最近刚刚看完了《Java编程思想》中关于数组的一章,所有关于Java数组的知识,应该算是了解的差不多了。在此再梳理一遍,以便以后遇到模糊的知识,方便查阅。

  Java中持有对象的方式,大概有三种:通过对象的Field去持有一个对象(通过组合的方式),通过数组,通过集合容器。这里先看一下通过数组与集合容器持有对象的不同,通过数组持有对象一般是明确我要持有对象的类型,也就是说数组用来持有同一种类型的对象,在jdk1.5之前,相对于集合容器来说,这是数组的一大优点,因为在没有引入泛型之前,可以把任意类型的对象都丢进集合容器中,当把一个对象丢进容器之后,这个对象的类型在运行时,就很难知道了,要想再次使用这个对象,就要进行不安全的向下转型(丢进集合中的对象被向上转型为Object),在jdk1.5引入泛型之后,集合容器也能只持有同一种类型的对象了,所以数组的这一个优势在jdk1.5之后丧失了。相对于集合容器,数组还有一大劣势,就是一个数组对象创建之后,这个数组的大小就固定了,在后续的对于这个数组的操作中,不能扩展这个数组的长度。对于集合容器,创建一个集合容器对象时,无需说明集合容器的大小,想放多少对象在集合中都行。至此,貌似一切都在暗示:集合比数组更方便,数组能做的集合照样可以完成。其实就是这样的,《Java编程思想》的作者也建议:能用集合就不用数组。但是数组作为一个轻量级的持有对象的数据类型,在代码中还是很常见。

  其实要想彻底理解数组,只要理解数组作为一种数据类型,在内容中是如何存储的。这样无论是数组的创建,还是初始化,还是数组元素的赋值...都好理解。

(图一张)

1.数组对象的创建:

数组变量的申明有两种方式: int a[] 和 int[] a ,推荐使用后者,因为可以明确这就是一个装有int值的数组。

 

数组作为一种引用类型的数据类型,数组变量存放的数组对象在堆内存中的引用地址。

一维基本类型的数组:

关于java中的数组