在讲数组之前,先看一个案例。假设下图为学生考试成绩图,如果想要存储该学生的考试成绩,是不是可以定义一个变量进行存储?变量的定义及使用的,可参考链接进行学习。java变量是什么?怎么定义的?有哪些注意事项?-CSDN博客
进一步分析,在学校的学生是不是很多个,那怎样去存储多个学生的成绩呢?其实,最容易想到的方法就是定义很多个变量,看下图所示:
通过定义变量的方式确实已经实现了对学生成绩的存储,但是一个学校这么多学生,每个学生都要去定义一个变量来存储他的成绩,是不是很麻烦?
这时,需要进一步思考,到底有没有一种变量只需要声明一次就能存储同类型数据的方式呢?答案是有的,这种方式就是数组。
1、什么是数组?
数据是一种用于存储多个相同数据类型的存储模型。通俗的说,数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一段连续的内存空间中。如下图所示:
2、数组的定义格式
格式1:数据类型[] 变量名
范例: int[] arr
读法:定义了一个int类型的数组,数组名是arr
格式2:数据类型 变量名[]
范例: int arr[]
读法:定义了一个int类型的变量,变量名是arr数组
说明:两种定义格式都可以定义数组,只不过形式不一样,看个人习惯使用即可,本文使用方式一。
2、数组的初始化
2.1 数组初始化概述
Java中的数组必须先初始化,然后才能使用。
初始化是什么?为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组初始化的方式有两种:动态初始化、静态初始化。
(1)动态初始化
初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 变量名=new 数据类型[数组长度];
范例:int[] arr =new int[3];
代码实现:
public class ArrayTest {public static void main(String[] args) {//数组有两种初始化的方式//方式一,通过new定义,然后再直接赋值进行初始化int[] arr = new int[3];/*** 等号左边:* int:说明数组中的元素类型是int类型* []:说明这是一个数组* arr:这是数组名称* 等号右边:* new:为数组申请内存空间* int:说明数组中的元素类型是int类型* []:说明这是一个数组* 3:数组的长度,其实就是数组中的元素个数*/}
}
(2)静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[] 变量名 = new 数据类型[]{数据1, 数据2, 数据3, ...};
范例:int[] arr=new int[] {1,3,5};
简化格式:数据类型[] 变量名 = {数据1, 数据2, 数据3, ...};
范例:int[] arr={1,3,5};
代码实现:
public class ArrayTest {public static void main(String[] args) {int[] arr = {1,3,5};}
}
3、数组元素访问
3.1 访问方式
(1)数组变量的访问方式
格式:数组名
(2)数组内部保存的数据的访问方式
格式:数组名[索引]
本文对索引不做说明,想深入了解索引的可参考链接 数组中的索引是什么?-CSDN博客
3.2 代码实现
public class ArrayTest {public static void main(String[] args) {//数组有两种初始化的方式//方式一,通过new定义,然后再直接赋值进行初始化int[] arr = new int[3];/*** 等号左边:* int:说明数组中的元素类型是int类型* []:说明这是一个数组* arr:这是数组名称* 等号右边:* new:为数组申请内存空间* int:说明数组中的元素类型是int类型* []:说明这是一个数组* 3:数组的长度,其实就是数组中的元素个数*///输出数组名System.out.println(arr);//输出数组中的元素System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}
4、数组的遍历
(1)代码实现
public class ArrayTest {public static void main(String[] args) {int[] arr = {1,3,5};for (int i=0;i< arr.length;i++){System.out.println(arr[i]);}}
}
(2)运行结果
5、数组的特点
(1)数组在初始化时就固定了存储空间,该存储空间不可扩展;
(2)数组的存储空间是连续的;
(3)数组存储的数据必须是相同类型。
本文为学习笔记,所参考文章均已附上链接,若有疑问请私信!
创作不易,如果对你有点帮助的话麻烦点个赞支持一下!
新手小白,欢迎留言指正!