Java基礎(chǔ)教程:Java動態(tài)數(shù)組

Java基礎(chǔ)教程:Java動態(tài)數(shù)組

天津卓眾教育      2022-03-22 15:30:01     11

Java基礎(chǔ)教程:Java動態(tài)數(shù)組,  我們可以使用Class類中的isArray()方法來檢查類是否是數(shù)組?! ∥覀兛梢詣?chuàng)建一個數(shù)組,使用反射通過讀取和修改其元素的值ja

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹



  我們可以使用Class類中的isArray()方法來檢查類是否是數(shù)組。


  我們可以創(chuàng)建一個數(shù)組,使用反射通過讀取和修改其元素的值java.lang.reflect.Array類。


  Array類的getLength()方法獲取數(shù)組的長度。


  Array類中的所有方法都是靜態(tài)的。


  要創(chuàng)建數(shù)組,請使用Array類中的重載靜態(tài)方法newInstance()。


  ObjectnewInstance(Class<?>componentType,intarrayLength)


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


  第一個方法根據(jù)指定的組件類型和數(shù)組長度創(chuàng)建一個數(shù)組。


  第二個版本創(chuàng)建指定組件類型和尺寸的數(shù)組。


  newInstance()方法的返回類型是Object,我們需要將它轉(zhuǎn)換為實際的數(shù)組類型。


  下面的代碼創(chuàng)建一個長度為5的int數(shù)組。


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


  要創(chuàng)建一個維度為5乘3的int數(shù)組。


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


  例子


  以下代碼顯示了如何動態(tài)創(chuàng)建數(shù)組并操作其元素。


  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());


  }


  }


  }


  上面的代碼生成以下結(jié)果。


  Java數(shù)組反射


  獲取數(shù)組的維度


  Java支持array數(shù)組。


  類中的getComponentType()方法返回數(shù)組的元素類型的Class對象。


  以下代碼說明了如何獲取數(shù)組的維度。


  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;


  }


  }


  上面的代碼生成以下結(jié)果。


  Java數(shù)組反射


  展開數(shù)組


  Java數(shù)組是一個固定長度的數(shù)據(jù)結(jié)構(gòu)。


  要放大數(shù)組,我們可以創(chuàng)建一個更大尺寸的數(shù)組,并將舊數(shù)組元素復(fù)制到新數(shù)組元素。


  以下代碼顯示如何使用反射展開數(shù)組。


  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;


  }


  }


  上面的代碼生成以下結(jié)果。


    

       以上就是天津卓眾教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java基礎(chǔ)教程:Java動態(tài)數(shù)組”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


Java基礎(chǔ)教程

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。