数组拷贝:
在Java中,允许将一个数组变量拷贝给另一个数组变量
代码片段
int[] smallPrims = {1,2,3,4,5,6};
int[] luckyNumber = smallPrims;
luckyNumber[5] = 12;
System.out.println(smallPrims[5]);//此时smallPrims[5]也为12
如果希望将数组中的所有值都拷贝到一个新的数组,那么就要使用Arrays类的copyOf方法
int[] copiedLuckyNumber = Arrays.copyOf(luckyNumber, luckyNumber.length);
System.out.println(Arrays.toString(copiedLuckyNumber));
增加数组的大小
luckyNumber = Arrays.copyOf(luckyNumber, 2*luckyNumber.length);
数组排序:
Scanner in = new Scanner(System.in);
System.out.println("输入需要的数量");
int k = in.nextInt();//输入需要的最大数量
System.out.println("最大数");
int n = in.nextInt();
int[] num = new int[n];//定义数组num,其长度为键盘输入的n
for(int i = 0;i<num.length;i++) {
num[i] = i+1;
}
int[] result = new int[k];//定义一个新的数组存放需要抽取的数
for(int i = 0;i<result.length;i++) {
int r = (int)(Math.random()*n);//利用math.random方法返回0~1的随机浮点数,用n乘以则得到一个从0~n-1的随机数
result[i] = num[r];//将result的第i个元素设置为num[r]存放的数值,最初是r+1
num[r] = num[n-1];//确保不会再抽取那个数值,因为所抽取的数值必须不相同
n--;
}
Arrays.sort(result);//每次抽取的都是下标而不是实际的值。下标指向包含尚未抽取过的数组元素,在抽取了K个值之后,就可以对result数组进行排序了。
System.out.println("排序");
for(int r:result)
System.out.println(r);
多维数组:
多维数组将使用多个下标访问数组元素,它适用于表示表格以及更加复杂的排列形式。
声明一个二维数组:
double[] [] balance;
与一维数组一样,在没有调用new进行初始化之前不能使用它:
balance = new double[a][b];
如果知道数组元素,可以不调用new直接对多维数组进行初始化:
int[][] num = {
{1,2,3,4,5}
{7,8,9,10,11}
};
一旦数组被初始化,就可以使用两个方括号访问每一个元素
balance[i][j]
for each 循环语句不能自动处理二维数组的每个元素,它是按照行(一维数组进行处理)想要访问二维数组a的每个元素,需要使用两个嵌套的循环
for(double[] row : a)
for(double value :row)
......