数组
数组是什么呢?
- 数组是一种用于存储数据的典型数据结构。
- 数组是把具有相同类型的若干变量按有序的形式组织起来的一种形式
数组主要分为两种
- 一维数组
- 二维数组
一维数组
一维数组的定义:
一维数组的定义,格式为type 对象名[];或者 type []对象名;其中type可以是基本数据类型int等,也可以是引用数据类型String 等。
例如:
String stringArray[]; //定义一个String类型的一维数组
int []intArray; //定义一个int类型的一维数组
一维数组的初始化:
一维数组的初始化分为两种:
- 静态初始化
- 动态初始化
静态初始化
何谓静态呢?静态就是不能动的,是固定的,准确来说是一经初始化就固定的元素。
静态初始化格式:type 对象名[]={元素1,元素2,元素3};其中元素类型要与type类型匹配一致,这样初始化的数组,元素顺序就是存放的顺序。
例如:
int array[]={8,65,98,12,4} //静态初始化int类型的array数组,其中元素是定死的
上面代码为数组array分配了5个int大小的内存空间,每一个空间存放了一个int类型的元素。其中8是array数组的第一个元素,因此它的索引(下标)为0,用array[0]表示位置。
数组的索引都是从0开始的。索引对数组元素就相当于一个人的名字对人而言,索引是用来存取数组元素的。
动态初始化
动态初始化,顾名思义不是固定住的元素,后续可以添加数组元素的数组的初始化行为。
动态初始化格式:type 对象名[]=new type[长度];
例如:
package com.ew;
/**
* @author ew
*/
public class TestArray {
public static void main(String[] args) {
int array[]=new int[5]; //动态初始化一个数组
array[0]=5; //向数组中存元素
array[1]=6;
array[2]=7;
for(int m:array) { //增强for循环,打印数组元素
System.out.println(m);
}
}
}
结果:
结果上居然出现了两个零,这是怎么回事?
原因是当数组某些位置没有存元素,Java机制会根据数组类型的默认值存默认值进去,类型默认值在我前面的Java基础上有讲到。
例如:array[3]与array[4]在其中元素就为零,因为这是int 类型数组,默认值为零。
二维数组
一维数组通常是一个有序的数据元素集合,通常用来表示队列这种结构的数据,但是针对于表格类的数据,他就无能为力了。因此二维数组就登场了。
二维数组格式:
- type [][] 数组名={{8,6},{7,5}} ; (二行二列)
- type [][] 数组名=new type [5][4] ; (五行四列)
二维数组初始化:
- 二维数组初始化与一维数组初始化一样,也有两种,静态与动态。
- 上面的第一种格式就是静态初始化
- 第二种格式就是动态初始化
二维数组的理解
- 在二维数组中有两个下标,第一个下标表示行,第二个下标表示列。
- 仅仅只使用第一个下标将得到一个一维数组的引用(如intArray[2]);
- 只有同时使用这两个下标才可以唯一的决定数组中的某个元素(如intArray[2][2])。
- 二维数组的每个元素是个一维数组!
二维数组的遍历
一维数组的遍历是用一个for循环,那么针对二维数组就用两个for循环也叫双重for循环
package com.ew;
public class Array3 {
public static void main(String[] args) {
//二维数组静态初始化
int[][] intArray= {{1,2,3},{4,5,6}};
//真实位置
// 1 2 3
// 4 5 4
//从二维数组中取元素
int v=intArray[0][1];
System.out.println(v);
//二维数组动态初始化
int[][] array = new int[2][3];
array[0][0]=1;
array[0][1]=2;
array[0][2]=3;
array[1][0]=4;
array[1][1]=5;
array[1][2]=6;
System.out.println("------分割线-------");
/**
* 遍历二维数组的思路
* 1、拿到二维数组中的每个元素。但是,要注意:二维数组的每个元素是一个一维数组
* 2、遍历每个一维数组
* 3、在从一维数组拿元素
*/
for(int i=0;i<array.length;i++) {
int[] tempArray=array[i];
for(int j=0;j<tempArray.length;j++) {
int k = array[i][j];
System.out.print(k+" ");
}
}
}
}
结果:
熟悉了基本思路后,二维数组遍历就不这样了,就这样了。
具体看这里:https://blog.csdn.net/ewcc_ycl/article/details/102492203