Java在创建数组的时候,需要指定数组长度,且数组长度不可变。而在java.lang.reflect包下提供了一个Array类,这个类中包括了一系列static方法,通过这些方法可以创建动态数组,对数组元素进行赋值、取值操作。
Array类提供的主要方法如下:
- Object newInstace(Class componentType,int length)
创建一个具有指定元素类型和长度的新数组。
- Object newInstance(Class componentType,in... dimensions)
创建一个具有指定元素类型和维度的多维数组。
- void setXxx(Object array,int index,xxx val)
将指定数组对象中索引元素的值设置为指定的xxx类型的val值。
- xxx getXxx(Object array,int index)
获取数组对象中指定索引元素的xxx类型的值。
1.操作一维动态数组
import java.util.Scanner;
import java.lang.reflect.*;
public class Test{
public static void main(String args[]){
try{
Scanner sc = new Scanner(System.in);
Class c = Class.forName("java.lang.String");
System.out.println("请输入班级人数:");
intstNum=sc.nexInt()t;
Object arr = Array,newInstance(c,stuNum);
System.out.println("请输入学号:");
int id= sc.nextInt();
System.out.println("请输入姓名:");
String name = sc.next();
Array.set(arr,(id-1),stuName);
System.out.println("学号:"+id+",姓名:"+Array.get(arr,(id-1)));
}catch(Exception e){
e.printStackTrace();
}
}
}
}
结果:
请输入班级人数:
40
请输入学号:
20
请输入姓名:
雷静
学号:20,姓名:雷静
2.操作多维动态数组
使用Array类创建一个多维数组的方法为newInstance(Class componentType,int... dimensions),其中dimensions参数表示新建数组维度的Int数组。
import java.lang.reflect.*;
public class Test{
public static void main(String args[]){
try{
Calss c = Integer.TYPE;
int dim[]={8,10};
Object arr = Array.newInstance(c,dim);
Object arr4=Array.get(arr,4);
Array.set(arr4,6,20);
System.out.println("arr4[4][6]的值为:"+Array.get(arr4,6));
}catch(Exception e){
e.printStackTrace();
}
}
}