java中的arraycopy(),copyOf()和copyOfRange()方法詳解
java語言提供了很多的方法來對陣列進行復制。其中我們常用的方法有三種,下面一一列舉出來
1. arraycopy()方法
函式原型:arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src: 原陣列 srcPos:原陣列起始的位置
dest:目的陣列 destPos:目的陣列的起始位置
length:所需複製陣列的長度
需要注意的是要重新宣告一個同類型且長度足夠的陣列,否則會出現異常。
下面舉個例子:
package 筆記; import java.util.Arrays;//注意這裡 public class Example5_20_3 { public static void main(String[] args) { // TODO Auto-generated method stub int[] a={1,4,6,45,3,2,56,76,5,4,3,4,5,6}; int[] b=new int[8];//注意陣列的長度 System.arraycopy(a, 0, b, 0, 8); System.out.println(Arrays.toString(b)); } }
System.arraycopy(a ,0 ,b ,0 ,8)這句話可以翻譯為:把陣列a從下標為0的位置依次開始複製到陣列b下標為0的位置,複製長度為8。
使用arraycopy()方法要實現指明方法的路徑,即標頭檔案的import語句。在我們程式設計過程中不必一條條地去指明路徑,我們可以使用快捷鍵Ctrl+shift+o即可補全所缺的路徑。
輸出的結果是:[1, 4, 6, 45, 3, 2, 56, 76]
arraycopy()方法的主要缺點是必須事先建立好目的陣列。
2.copyOf()方法
函式原型:copyOf(oringinal, int newlength)
oringinal:原陣列 newlength:複製陣列的長度
這個方法是從原陣列的起始位置開始複製,複製的長度是newlength。相比較於前一種,這種相當於特殊的情況,只能從原陣列的起始位置開始複製。
package 筆記;
import java.util.Arrays;
public class Example5_20_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {3,456,4,3,2,45,5,65,35,6,5,5,43};
int[] b=new int[8];
b=Arrays.copyOf(a, 8);
System.out.println(Arrays.toString(b));
}
}
輸出的結果是:[3, 456, 4, 3, 2, 45, 5, 65]
3.copyOfRange()方法
函式原型:copyOfRange(oringinal,int from, int to)
該方法是從original陣列的下標from開始複製,到下標to結束
package 筆記;
import java.util.Arrays;
public class Example5_20_5 {
public static void main(String[] args) {
// TODO Auto-generated method stu
int[] a= {3,45,32,42,34,2,1,57,4,3,56,4,65};
int[] b=new int[8];
b=Arrays.copyOfRange(a, 2, 10);
System.out.print(Arrays.toString(b));
}
}
輸出的結果:[32, 42, 34, 2, 1, 57, 4, 3, 56]
這幾個陣列複製方法是我們最常用的方法。方法的函式體都比較簡單,只是我們平時遇到這些方法的次數不多,且比較分散,導致很多人對這些方法都不熟悉。現在我把我們最常用的方法給羅列到一起,希望對大家有所幫助。