一,数组的概念和特点
数组是一个用于存储数据的容器
特点:
数组的长度是固定的(在程序运行期间,数组的长度是不可变的)
同一个数组只能存储一种数据类型的值
二,数组的定义
格式1:
// 数据类型[] 数组名 = new 数据类型[长度]; int[] arr = new int[10];格式2:
// 数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,...}; String[] names = new String[]{"曹操","曹仁","曹真","曹爽"};格式3:格式2的简化版
// 数据类型[] 数组名 = {值1,值2,值3,...}; double[] scores = {88,75,81,15,16};
三,数组中元素的赋值和获取
索引:也叫下标,范围
[0,长度-1]
,一般使用 index 或者 i 表示数组长度的获取:
数组名.length
获取:
数组名[下标]
注:
如果下标超出了范围,会发生
ArrayIndexOutOfBoundsException数组下标越界异常
,当异常发生时,程序会立即终止。如果创建数组时,只明确了数组的长度,没有明确数组的元素,数组中的元素也有默认值,
整型:0
浮点型:0.0
字符型:空格
布尔型:false
引用数据类型:null
赋值:
数组名[下标] = 值
四,数组的补充
在数组工具类中提供了一个用于查看指定数组的方法:
Arrays.toString(数组)
数组在传递时,传递的是数组的在内存中的地址,因为数组是引用数据类型
数组在打印时,打印的是地址
五,可变参数
格式:
public static 返回类型 方法名(数据类型...变量名){ }概念:实参在传递数据时,可以是指定类型的任意多个值
注:
可变参数的本质是一个数组
将参数传递给可变参数时,可以是指定类型的若干个值也可以是指定类型的数组
可变参数只能出现在参数列表的末尾
六,二维数组
概念:二维数组是数组的数组,二维数组中的每一个元素都是一个一维数组
定义
格式1:
// 数据类型[][] 数组名 = new 数据类型[n][m] // 表示这个二维数组中有n个一维数组,每一个一维数组的长度是m int[][] a = new int[3][4];格式2:
// 数据类型[][] 数组名 = new 数据类型[n][] // 表示这个二维数组中有n个一维数组 int[][] arr = new int[3][]; // 注:这种创建方法中二维数组内的每一个一维数组都需要单独的进行创建,这些一维数组在创建时不能使用简化形式格式3:
// 数据类型[][] 数组名 = new 数据类型[][]{{值1,值2,值3,...},{值1,值2,值3,...},...}; // 这种写法可以使用简化形式 int[][] arr = { {1,2,3}, {5,6}, {11} };
二维数组中元素的赋值和获取:同一维数组
二维数组的遍历:
int[][] arr = { {1,2,3,3}, {5,6,7,8,-100}, {11,22,33,44,55} }; int sum = 0; for(int i = 0;i<=arr.length-1;i++){ for(int j = 0 ;j <= arr[i].length - 1;j++){ sum += arr[i][j]; } } System.out.println(sum);
七,数组的排序
冒泡排序:
public static void f1(){ int[] arr = {7,-5,11,0,12,3,-7}; for(int i = 0 ;i < arr.length - 1;i++){ for(int j = 0;j < arr.length - 1 - i;j++){ if(arr[j] > arr[j+1]){ int t = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = t; } } } System.out.println(Arrays.toString(arr)); }选择排序:
public static void f(){ int[] arr = {1,43,42,31,3,12,32,14,2,34,54,6,5,11}; System.out.println(Arrays.toString(arr)); for(int j = 0 ;j < arr.length - 1;j++){ int maxIndex = j; for(int i = j + 1;i<=arr.length - 1;i++){ if(arr[i] > arr[maxIndex]){ maxIndex = i; } } int t = arr[j]; arr[j] = arr[maxIndex]; arr[maxIndex] = t; } System.out.println(Arrays.toString(arr)); }
八,增强 for 循环(foreach循环)
注:
只能用于遍历容器(数组、集合)
foreach循环中没有下标的概念
格式:
for(数据类型 变量名 : 数组){ // 循环体 }foreach 循环一般用于执行所有数据的整体查看功能