目录
数组最重要操作就是遍历。只要能遍历所有元素就可以求最大值、最小值、对数组排序等。
一、求最大值、最小值
1、举个简单的栗子
@Test
public void test6() {
int[] array = {22,1,66,34,8,2};
//快捷写法:array.fori
int max = array[0]; //初始认为array[0]为最大值,也可以自己随便写一个值
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
System.out.println("max: " + max);
}
以上是求最大值的函数,求最小值类似。注意:对于最大值的初始值取值建议还是使用数组里面的值(任何一个都行,我用的是array[0]),因为你自己设的值可能比数组中的任何一个都要大,这样的话得到的最后结果就是错的。例如:可以看出下面这个数组的最大值应该是-1,而求出的却是0。
@Test
public void test7() {
int[] array = {-1, -22, -53, -12};
//快捷写法:array.fori
int max = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
System.out.println("max: " + max);
}
输出结果为:
2、封装成函数
用上面的写法数组是固定的,如果采用这种写法的话要求别的数组的最大值时就得再写一遍这样的函数,只是把数组换一下,其他都不变,这样写的话重复的代码就会很多,所以可以把这些重复的代码封装成一个函数,然后直接调用。
写法如下:
@Test
public void test8() {
int[] array = {-1, -22, -53, -12};
//方法调用:方法名(参数)
int max = getMax(array);
System.out.println("max: " + max);
}
/**
* 求数组的最大值 (这里写这个方法是干什么的)
* @param array 要求最大值的数组
* @return 返回数组的最大值
*/
public int getMax(int[] array) {
int max = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
return max;
}
求最小值的方法和求最大值一样。
二、数组累加和
@Test
public void test9() {
int[] array = {22,1,66,34,8,2};
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += array[i];
}
System.out.println("sum: " + sum);
}
这里没有什么难度,只要把数组的遍历和访问方式学会了,这里也就自然能理解了。
三、二维数组
1、什么是二维数组?
二维数组就像是一个表格,可以有多行多列,而一维数组就是只有一行,可以有多列。
Java中的二维数组很特别,它可以是规则的,也可以是规则的:
2、二维数组的创建、初始化和遍历
两种创建方式见下面的代码:
@Test
public void test1() {
//第一种是在创建的时候直接赋值,如下:
//int[][] array = {{1,2}, {2,3}, {3,4,5}};
//等价于下面的创建和赋值
//第二种是创建的时候不赋值,后面根据下标赋值,如下:
int[][] array = new int[3][]; //因为可能是不规则的,每一行的列数可能不相等,所以一般不指定列数
array[0] = new int[2]; //表示第1行有2列
array[1] = new int[2]; //表示第2行有2列
array[2] = new int[3]; //表示第3行有3列
array[0][0] = 1; //第1行的第1个数是1
array[0][1] = 2; //第1行的第2个数是2,下面类似
array[1][0] = 2;
array[1][1] = 3;
array[2][0] = 3;
array[2][1] = 4;
array[2][2] = 5;
for (int i = 0; i < array.length; i++) { //遍历二维数组
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
}
上面的代码创建出来的效果就是下面这样:
3、二维数组两行互换
int[] temp = array[0];
array[0] = array[1];
array[1] = temp;