import java.util.Arrays;
public class ArrayReallocationDemo {//Reallocation 再分配的意思
public static void main(String[] args) {
int[] data1 = new int[]{1,3,5,7,9};
printArray(data1);//调用此方法
/**
* [1,3,5,7,9]
*/
int[] data2 = Arrays.copyOf(data1, 6);//复制指定的数组,data1为要复制的数组,6为返回的副本的长度
data2[5] = 11;//把11给data2下标为5这个值
printArray(data2);
/**
* [1,3,5,7,9,11]
*/
int[] data3 = Arrays.copyOfRange(data1, 2,10);//将指定数组的指定范围复制到一个新数组。
//2为要复制的范围的初始索引(包括) 10为最后索引(不包括)
printArray(data3);
/**
* [5,7,9,0,0,0,0,0]
*/
char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't',
'e', 'd' };
char[] copyTo = new char[7];
/**
* 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
* src - 源数组。
* srcPos - 源数组中的起始位置。
* dest - 目标数组。
* destPos - 目标数据中的起始位置。
* length - 要复制的数组元素的数量。
*/
System.arraycopy(copyFrom, 2, copyTo, 0, 7);
System.out.println(new String(copyTo));
/**
* caffein
*/
}
private static void printArray(int[] data){
//构造一个字符串生成器,并初始化为指定的字符串内容。"["
StringBuilder stringBuilder = new StringBuilder("[");
for(int i = 0; i< data.length; i++){
stringBuilder.append(data[i]);//把传进来的data循环增加到stringBuilder
if(i < data.length - 1){//最后一个数之前
stringBuilder.append(",");//加上 ,符号
}
}
stringBuilder.append("]");//以']'符号结尾
System.out.println(stringBuilder);
}
}