数组的定义
一组相同的数据类型的数据的集合。在Java中,可以通过声明一个数组来代替多个重复的数据类型的变量。例如:
int[] numbers = new int[5];
这段代码相当于声明了五个int型的变量。可以极大的简化变量声明。
需要注意的是:
- 数组的下标是从0开始的;
- 一旦数组被创建,其长度就不能再更改。
数组的创建和初始化
和普通变量一样,数组需要先声明后使用,数组的创建有以下几种方式:
int[] num = new int[10]; // java风格的数组声明,相当于创建十个int型的变量。
int num[] = new int[10]; // C语言风格的数组声明
数组的初始化分为两种:静态初始化和动态初始化。
-
动态初始化:人为设定数组的长度并赋值。
int[] num = new int[3]; num[0] = 0; num[1] = 1; num[2] = 2; // num[3] = 3; 编译错误,数组的下标是从0开始的,0,1,2已经是3个了。
-
静态初始化:让计算机自动判断数组的长度
int[] num = {1, 2, 3, 4, 5}; // 计算机自动判断数组长度为5 System.out.println(num.length); // 打印数组长度。length方法可以求的数组长度 int[] num = new int[]{1, 2, 3};
-
需要特别注意的是,以下写法均不合法:
int[] array; // 上面这种写法编译器不会报错,但是无法使用,原因是计算机认为这是一个数组长度为0的数组 int[3] array; // 编译器报错,前面的中括号不能出现数字。
数组的基本处理
数组一般和循环搭配使用。
数组的创建、初始化和操纵数组:
public class TestArray {
public static void main(String[] args) {
double[] array= {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (int i = 0; i < array.length; i++) {
System.out.println(array[i] + " ");
}
// 计算所有元素的总和
double sum = 0;
for (int i = 0; i < array.length; i++) {
sum += array[i];
}
System.out.println("Sum is " + sum);
// 查找最大元素
double max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > max)
max = array[i];
}
System.out.println("Max is " + max);
}
}
数组作为函数的参数以及返回值
- 数组作为函数的参数,这里我们以冒泡排序为例:
public class BubbleSort { /** * 冒泡排序 * 顾名思义,按照气泡大小,按照从小到大的顺序排序 * 重复的访问数据,依次比较相邻的的元素,直到所有的元素都不需要交换 * * @param array */ public static void bubbleSort(int[] array) { for (int i = 0; i < array.length; i++) { // 两层循环,每次都用外循环的起始值array[i]和内循环array[i+1, +2, ···]的值比较 for (int j = i + 1; j < array.length; j++) { // 只要比起始值大,交换,这样每次循环结束得到的起始值都是最小的 if (array[i] > array[j]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } public static void main(String[] args) { int[] array = {32, 536, 75, 45, 86, 53}; bubbleSort(array); for (int i = 0; i < array.length; i++) { System.out.println(array + " "); } } }
- 数组作为函数的返回值
public class Test { public static int[] test(int num1, int num2) { int sum = num1 + num2;// 总和 int avg = sum / 2;// 平均数 // 两个结果都希望进行返回,需要一个数组保存多个结果 int[] result = {sum, avg}; return result; } public static void main(String[] args) { int[] result = test(10, 20);// 调用方法1 System.out.println("总和:" + result[0]); System.out.println("平均值:" + result[1]); } }