1.什么是数组?(what)
数组是具有相同数据类型且按照一定次序排列的一组变量的集合体。即用一个变量名表示一批数据。(一个数组在内存中会得到一段连续的空间)
2..为什么使用数组?(why)
在实际应用中,经常需要处理相同类型的一批数据,所以就引用了数组,为了简化代码
3.数组中有哪些基本概念?
什么是数组元素?
构成一个数组的每一个数据称为数组元素。
什么是数组下标?
下标是数组元素在数组中的位置。在一个数组中,数组下标使用整数表示的,从0开始,依次累加1。
什么是数组大小
数组中的元素个数叫做数组的大小,也叫数组的长度。
4.使用数组
定义数组
为数组元素分配内存
数组元素初始化
使用数组
5.定义数组
定义方式有两种(推荐使用第一种,简单明了)
int[] arr1;//第一种 int arr2[];//第二种
注意:
数组是什么类型,数组的元素就是什么类型
数组是引用类型,引用类型的默认值都是null
6.为数组分配空间
要让系统为数组元素分配存储空间,必须指出数组元素的个数,并且通过new运算符为数组元素分配空间。
语法格式:
数组名 = new 数据类型【数组长度】;
如:
arr1 = new int[5]; arr2 = new int[6];
定义数组和分配空间可以同时进行
int[]arr3 = new int[5]; String[]arr4 = new String[5];
注意:
int类型的数组是引用类型,int数组的元素是基本类型。
数组是什么类型,数组元素就是什么类型。由于arr1是int类型的数组,所以arr1数组的元素也是int类型的,由于int类型的默认值是0,因此每个arr1数组元素的默认值是0.
7.数组元素初始化
数组声明并为数组元素分配空间后,必须为数组元素初始化(初始化就是第一次赋值)后,才能使用数组。如果没有为数组元素初始化,那么数组元素也是有默认值的。
可以通过数组下标为数组元素初始化
arr1 [0] = 67; arr1 [1] = 77; arr1 [2] = 87;
定义数组,为数组元素分配内存,数组元素初始化,这三步是可以写在一起的,有两种写法
//第一种写法 int[]arr1 = new int[]{1,3,5,6}; //第二种写法 int[]arr1 = {1,3,5,6}
8.使用数组
使用数组通常是求数组中的最大值,最小值,总和,平均值,遍历数组等等。
使用增强for循环遍历数组
格式:
for(元素类型 变量名:要循环的数组或者集合){
......
}
eg:
public static void main (String[] args){ int[]arr1 = new int[]{1,8,6,4}; for (int i:arr1){ system.out.println("数组元素的值依次为"+i); } }
排序:常用的排序算法有冒泡排序,插入排序,选择排序,快速排序,堆排序,归并排序,希尔排序,二叉树排序,计数排序等等。
二维数组
1.定义二维数组
定义二维数组的语法规则如下:
数据类型[][] 数组名
或者数据类型 数组名[][]
建议使用前者前面的[]代表的是第一维,后面的[]代表的是第二维
2.为二维数组分配内存
int [][]arr1;//定义一个二维数组 arr1=new int[3][3];//为二维数组元素分配内存
注解:java是支持多维数组的,但是从内存分配来看,java只支持一维数组,或者说表面上的多维数组,实质上都是一维数组。二维数组实际上是个一维数组,这个一维数组的每一个元素又是个一维数组。
3.二维数组初始化
int[][]arr1=new int[][]{ {11,12,13} {14,15,16} {17,18,19} }; //第二种方法 int[][]arr1={ {11,12,13} {14,15,16,17} {18,19,20,21,22} };
4.二维数组的遍历
使用双重for循环遍历二维数组
public static void main(String[] args) { /* * 定义3个班级,第一个班级2名学生,第二个班级3名学生,第三个班级2名学生 * 初始化三个班级的所有学生的成绩 */ int[][]arr1= { {67,75}, {78,82,93}, {71,72}, }; //定义保存总成绩的变量total int total; //遍历二维数组,计算每个班的总成绩 for(int i =0;i<arr1.length;i++) { String str = (i+1)+"班级"; total = 0; for(int j = 0;j<arr1[i].length;j++) { total+=arr1[1][2]; } System.out.println(str+"总成绩"+total); } }
5.Arrays类
JDK中提供了一个专门用于操作数组的工具类,即Arrays类,
方法 返回类型 说明 equals(array1,array2) boolean 比较两个数组是否相等 sort(array) void 对数组array的元素进行排序 toString(array) String 将一个数组array转换成一个字符串 fill(array,val) void 把数组array的所有元素都赋值成val copyOf(array,length) 与array数据类型一致 把数组array复制成一个长度为length的新数组 binarySearch(array,val) int 查询元素值val在数组中array中的下标