专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础教程:Java动态数组

Java基础教程:Java动态数组

更新时间:2020-02-24 13:45:13 来源:动力节点 浏览2028次


Java基础教程:Java动态数组


  我们可以使用Class类中的isArray()方法来检查类是否是数组。


  我们可以创建一个数组,使用反射通过读取和修改其元素的值java.lang.reflect.Array类。


  Array类的getLength()方法获取数组的长度。


  Array类中的所有方法都是静态的。


  要创建数组,请使用Array类中的重载静态方法newInstance()。


  ObjectnewInstance(Class<?>componentType,intarrayLength)


  ObjectnewInstance(Class<?>componentType,int...dimensions)


  第一个方法根据指定的组件类型和数组长度创建一个数组。


  第二个版本创建指定组件类型和尺寸的数组。


  newInstance()方法的返回类型是Object,我们需要将它转换为实际的数组类型。


  下面的代码创建一个长度为5的int数组。


  int[]ids=(int[])Array.newInstance(int.class,5);


  要创建一个维度为5乘3的int数组。


  int[][]matrix=(int[][])Array.newInstance(int.class,5,3);


  例子


  以下代码显示了如何动态创建数组并操作其元素。


  importjava.lang.reflect.Array;


  publicclassMain{


  publicstaticvoidmain(String[]args){


  try{


  Objectmy=Array.newInstance(int.class,2);


  intn1=Array.getInt(my,0);


  intn2=Array.getInt(my,1);


  System.out.println("n1="+n1+",n2="+n2);


  Array.set(my,0,11);


  Array.set(my,1,12);


  n1=Array.getInt(my,0);


  n2=Array.getInt(my,1);


  System.out.println("n1="+n1+",n2="+n2);


  }catch(NegativeArraySizeException|IllegalArgumentException


  |ArrayIndexOutOfBoundsExceptione){


  System.out.println(e.getMessage());


  }


  }


  }


  上面的代码生成以下结果。


  Java数组反射


  获取数组的维度


  Java支持array数组。


  类中的getComponentType()方法返回数组的元素类型的Class对象。


  以下代码说明了如何获取数组的维度。


  publicclassMain{


  publicstaticvoidmain(String[]args){


  int[][][]intArray=newint[1][2][3];


  System.out.println("int[][][]dimensionis"+getArrayDimension(intArray));


  }


  publicstaticintgetArrayDimension(Objectarray){


  intdimension=0;


  Classc=array.getClass();


  if(!c.isArray()){


  thrownewIllegalArgumentException("Objectisnotanarray");


  }


  while(c.isArray()){


  dimension++;


  c=c.getComponentType();


  }


  returndimension;


  }


  }


  上面的代码生成以下结果。


  Java数组反射


  展开数组


  Java数组是一个固定长度的数据结构。


  要放大数组,我们可以创建一个更大尺寸的数组,并将旧数组元素复制到新数组元素。


  以下代码显示如何使用反射展开数组。


  importjava.lang.reflect.Array;


  importjava.util.Arrays;


  publicclassMain{


  publicstaticvoidmain(String[]args){


  int[]ids=newint[2];


  System.out.println(ids.length);


  System.out.println(Arrays.toString(ids));


  ids=(int[])expandBy(ids,2);


  ids[2]=3;


  System.out.println(ids.length);


  System.out.println(Arrays.toString(ids));


  }


  publicstaticObjectexpandBy(ObjectoldArray,intincrement){


  ObjectnewArray=null;


  intoldLength=Array.getLength(oldArray);


  intnewLength=oldLength+increment;


  Class<?>c=oldArray.getClass();


  newArray=Array.newInstance(c.getComponentType(),newLength);


  System.arraycopy(oldArray,0,newArray,0,oldLength);


  returnnewArray;


  }


  }


  上面的代码生成以下结果。


    Java基础教程:Java动态数组

       以上就是动力节点Java培训机构小编介绍的“Java基础教程:Java动态数组”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>