18.4.4 操作数组
18.4.4 操作数组
在java.lang.reflect
包下还提供了一个Array
类,Array
对象可以代表所有的数组。
Array有什么有用
程序可以通过使用Array
来动态地创建数组,操作数组元素等.
Array类方法
Array
提供了如下几类方法。
方法 | 描述 |
---|---|
static Object newInstance(Class<?> componentType,int ... length) |
创建一个具有指定的元素类型、指定维度的新数组. |
static Object get(Object array, int index) |
返回array 数组中第index 个元素, 类型为Object |
static void set(Object array, int index, Object value) |
将array 数组中第index 个元素的值设为value |
static Xxx getXxx(Object array, int index) |
返回array 数组中第index 个元素,其中Xxx 指的是各种基本数据类型。 |
static void setXxx(Object array, int index,Xxx value) |
将array 数组中第index 个元素的值设为value ,其中Xxx 指的是各种基本数据类型 |
程序示例 Array创建一维数组
下面程序示范了如何使用Array
来生成数组,为指定数组元素赋值,并获取指定数组元素的方式。
1 | import java.lang.reflect.*; |
运行结果:
1 | 这是一个字符串 |
上面程序中分别通过Array
创建数组,为数组元素设置值,访问数组元素的值的示例代码,程序通过使用Array
就可以动态地创建并操作数组。
程序示例 Array创建多维数组
下面程序比上面程序稍微复杂一点,下面程序使用Array
类创建了一个三维数组
1 | import java.lang.reflect.*; |
上面程序的代码段1使用Array
创建了一个三维数组,程序中较难理解的地方是代码段2这部分,使用Array
为arrObj
的指定元素赋值,相当于为二维数组的元素赋值。由于二维数组的元素是一维数组,所以程序传入的参数是一个一维数组对象。
运行上面程序,将看到cast[2][3][8]
、cast[2][2][0]
、cast[2][2][1]
]元素都有值,这些值就是刚才程序通过反射传入的数组元素值。
本文重点
- 使用
Array
的newInstance
这个静态方法可以创建数组, - 该方法的第一个参数,是数组的类型,
- 第二分变长参数的个数表示数组的维度,
- 如果有一个变长参数,表示创建一维数组,
- 如果有多个变长参数,则表示创建多维数组.
- 变长参数的大小表示数组的长度.
- 第二分变长参数的个数表示数组的维度,
Array
方法提供get
和set
方法通过下标访问数组元素,但是要注意的是多维数组的情况:- 由于二维数组的元素是一维数组,则此时的通过下标来访问的
get
,或者set
方法,访问到的是一维数组. - 由于三维数组的元素时二维数组,则测试通过访问的
get,set
方法访问到的是二维数组.
- 由于二维数组的元素是一维数组,则此时的通过下标来访问的