数组是存储同一种数据类型多个元素的集合,是存储大数量级变量的容器(既可存储基本数据类型,也可存储引用数据类型)
比如现在需要统计一个班100名学生的选修课程以及各自该选修课程的考试成绩,再做课程选修人数占比统计以及考试成绩分布等等,按照只引入变量来统计的话,需要在程序中录入100组课程的变量与100组考试成绩的变量,操作量过大很难实现,并且统计时数据量更大,单纯引入变量将无法进行统计。
为了解决这种情况,Java中提供了数组供我们使用,可以将这些相同的数据类型放进一个容器,再进行统一的计算。
顾名思义,一维数组用来存储大量同一数据类型,二维数组则存储的是多个一维数组,当然也有有三维数组、四维数组等等,但是很少实现。
定义一个数组的格式有两种
int[] arr;
(定义一个int类型的数组arr,当然也可定义其他数据类型比如byte、long、double、char、String等等,注意数组中多个变量的数据类型要一致)int arr[];
(和第一种格式定义的完全相同,通常推荐使用第一种格式)所谓初始化,就是为数组中的数组元素分配内存空间,并且为每个元素赋值。
Java中数组必须先初始化后才可以使用。
数据类型[] 数据名=new 数据名[数据长度]
数组中第一个元素的索引为0,第二个元素的索引为1,以此类推。
数组的遍历就是输出数组中的每一个元素
此时我们需要用到for循环将数组中元素的索引从0开始依次循环并输出对应元素
例如定义一个int类型的数组arr,并依次输出其中每一个元素,相当于依次输出索引为0、1、2、3、4、5……的元素,将索引定义为一个变量 i 并配合for循环,将索引从0循环至arr.length减一(即数组长度减一,对应数组中最后一个元素),并输出对应元素(arr[ i ])。
数组的其他操作基本都建立在遍历的基础上。
获取数组中的最大值和最小值
例如求出数组 [30,400 154 ,35,2804,49,8000,365]
中的最大值和最小值
点击此处运行结果
例如将数组 [30,400 154 ,35,2804,49,8000,365]
实现元素反转
点击此处运行结果
例如录入一个索引,查询数组 [30,400 154 ,35,2804,49,8000,365]
中所对应的元素。
点击此处运行结果
if(录入的元素==arr[i]){sout(i)};
。再在方法外运用“if”若方法返回值为-1,则输出“查无元素所匹配的索引”。["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
中所对应的索引。(注意:判断两个字符串内容是否相同,得调用 equals()方法来判断)点击此处运行结果1
点击此处运行结果2
数据类型[][] 变量名 = new 数据类型[m][n];
这种格式属于动态初始化
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
arr[m][n]
表示第m+1个一维数组的第n+1个元素
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
例如int[][] arr = new int[3][]; arr[0] = new int[2]; arr[1] = new int[3]; arr[2] = new int[1];
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}...};
这个格式属于静态初始化
例如int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
遍历二维数组只需运用“for”循环语言的嵌套,外外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。
例如求公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
要求打印杨辉三角形(行数可以键盘录入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
System.out.print()
)和换行(System.out.println()
)来实现元素三角形的排布。