一. 一维数组:
数组也是变量,是堆中的一段连续的空间,数组中存储的数据数据类型必须一致。
1. 数组中的要素:(1).数组长度:数组中存储数据的个数代表数组的长度,数组的长度是固定的,是不会改变的。
(2).数组名:类似于变量名,它可以快速定位到自己的内存空间中,也可以用来区分不同的数组。
(3).数组元素:即数组中存储的数据。
(4).数组的类型:即数组中存储的元素的数据类型。
(5).下标 / 索引:数组中的下标从0开始,到数组的长度减1为止;数组中的下标有助于随机访问数组中的元素,也可以通过下标对数组中对应下标位置上的元素进行操作;但是一定要注意下标越界问题。
(6).适用场景:有固定数量的相同数据类型的数据可以存储在数组中。
2. 数组的定义:(1).数组的声明:语法格式:" 数组中数据的数据类型[ ] 数组名;"
(2).给数组申请空间:语法格式:" 数组名 = new 数组中数据的数据类型[ 数组的长度 ];" 注意:数组一旦申请了空间,系统会默认给每一个元素赋值,不同的数据类型会有不同的默认值。
注意:数组中数据的默认值:整型的默认值是" 0 ";浮点型的默认值是" 0.0 ";字符型的默认值是" null ";布尔型的默认值是" false "。
(3).数组的赋值:语法格式:" 数组名 [ 数组的下标 ] = 数组对应下标的值 ( 该值的数据类型对应数组声明时的数据类型 ) ";数组在赋值时一定要注意避免下标越界。
(4).数组边声明边申请空间:语法格式:" 数组中数据的数据类型[ ] 数组名 = new 数组中数据的数据类型[ 数组的长度 ];",该格式的前提是我们必须知道该数组的长度。
(5).数组边声明边赋值:语法格式:" 数组中数据的数据类型[ ] 数组名 = {元素1,元素2,元素3,. . . ,元素n} ",这种格式不能分行写,必须写在一行内。
(6).数组边声明边申请空间边赋值:语法格式:" 数组中数据的数据类型[ ] 数组名 = new 数组中数据的数据类型[ ] {元素1,元素2,元素3,. . . ,元素n};",这种格式[ ]内不能写数组的长度,因为数组的长度是根据具体的元素个数决定的。
3.数组中的基本操作:(1). 数组的长度:" 数组名.length "。
(2). 获取数组中的元素:通过下标可以获取数组中的元素,格式为:" 数组名[ 要获取元素的下标 ] "。在数组中通过下标操作时一定要注意避免下标越界。
(3). 数组的遍历:我们可以通过循环来遍历数组并获取数组中的元素,我们就可以用如以下的方法来获取数组中的全部元素。在循环时注意避免数组下标越界。
int[] nums = new int[]{1,2,3,4,5,6}; //定义数组
for(int i=0; i<nums.length; i++){ //循环遍历数组
System.out.println(nums[i]); //循环输出数组中的元素
}
增强的for循环:foreach循环
用foreach循环遍历数组时foreach避开了下标,不会出现数组下标越界的情况,通常用来访问元素;但是foreach循环不能实现与下标相关的操作,因此不会拿它来修改数组元素等操作。
foreach循环遍历数组:
int[] nums = new int[]{1,2,3,4,5,6}; //声明,申请空间并初始化数组
for(int i : nums){ //用foreach循环来遍历数组,foreach循环中的i不是数组下标,而是数组元素
System.out.println(i); //循环输出数组中的元素
}
(4).数组的输出:如果要输出数组中的每一个元素,需要通过循环遍历输出。如果直接输出数组名,则输出的是数组的内存地址。
二. 二维数组:
二维数组相当于一个矩阵,二维数组就类似是由多个一维数组组成,每一行代表一个一维数组。
1. 二维数组的定义:(1). 二维数组的声明:语法格式:" 数组中数据的数据类型[ ][ ] 数组名;"。
(2). 给二维数组申请空间:语法格式:" 数组名 = new 数组中数据的数据类型[ 行数 ][ 列数 ];" ,二维数组的行数是必须要声明的,列数可以声明也可以不声明。
(3). 二维数组的赋值:语法格式:" 数组名[ 行号i ] = new 数组中数据的数据类型[ ]{ 第i行中的元素 };"。二维数组中每一行的元素个数可以是不同的。
(4).二维数组的声明和创建:语法格式:" 数组中数据的数据类型[ ][ ] 数组名 = new 数组中数据的数据类型[ 行数 ][ 列数 ];",或者" 数组中数据的数据类型[ ] 数组名[ ] = new 数组中数据的数据类型[ 行数 ][ 列数 ];"。
2.二维数组的操作:(1). 二维数组的长度:语法格式:" 数组名.length;",二维数组中数组的长度指的是二维数组中的行数;换句话说,二维数组中只有行才可以有" 数组名.length "。
(2).二维数组的遍历:
int[][] nums = new int[3][]; //二维数组的声明和创建
nums[0] = new int[]{1,2,3};
nums[1] = new int[]{4,5};
nums[2] = new int[]{6}; //二维数组的初始化
for(int i=0; i<nums.length; i++){ //遍历二维数组的行数
for(int j=0; j<nums[i].length; j++){ //遍历第i行中的元素
System.out.println(nums[i][j]); //输出二维数组中的元素
}
}
(3).从键盘输入二维数组:若要连续从键盘输入多个元素时,每输入一个元素需要用空格分开。
Scanner input = new Scanner(System.in); //创建Scanner对象,从键盘输入数据,注意导包
int[][] nums = new int[3][]; //声明和创建数组
for(int i=0; i<nums.length; i++){ //遍历二维数组的行数
for(int j=0; j<nums[i],length; j++){ //遍历第i行中的元素
nums[i][j] = input.nextInt(); //调用nextInt()方法,从键盘输入整数
System.out.print(nums[i][j] + " "); //输出二维数组的元素
}
}