文章目录
十五、数组、排序、多维数组—二维数组
15.1、数组
数组介绍
数组可以存放多个 同一类型的数据。数组也是一种数据类型,是引用类型。[数(数据)组(一组)就是一组数据]
//1.double[] 表示 是double类型的数组 , 数组名 hens
//2.{3, 5, 1, 3.4, 2, 50} 表示数组的值/元素,依次表示数组的第几个元素
double[] hens = {3, 5, 1, 3.4, 2, 50};
//可以通过 hens[下标]来访问数组的元素
可以通过 数组名.length得到数组的大小/长度。
数组使用方式1--------直接定义
-
定义:
数据类型 数组名[] = new 数据类型[大小] (或者:数据类型[] 数组名 = new 数据类型[大小])
int a[] = new int[5] // 创建了一个数组,名字a,存放5个int
-
引用/访问/获取
数组名[下标/索引] 比如:a数组的第3个数,a[2]
数组使用方式2--------先声明,再创建
-
先声明数组
语法:数据类型 数组名[]; 也可以 数据类型[] 数组名;
int a[]; 或者 int[] a;
-
创建数据
语法:数组名 = new 数据类型[大小];
a = new int[10];
数组使用方式3--------静态初始化
-
初始化数组
语法:数据类型 数组名[] = {元素值,元素值…}
int a[] = {2,5,6,7,8,89,90,56} //如果知道数组有多少元素,具体上面的用法相当于: int a[] = new int[9]; a[0] = 2; a[1] = 5; a[3] =7; ...
数组使用细节
- 数组是多个相同类型数据的集合,实现对这些数据的统一管理
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
- 数组创建后,如果没有赋值,则有默认值。(int 0,short 0,byte 0, long 0,float 0.0,double 0.0,char \u000,boolean false,String null)
- 使用数组的步骤:1)声明数组并开辟空间 2)给数组各个元素赋值 3)使用数组
- 数组的下标是从0开始的
- 数组下标必须在指定的范围内使用,否则会出现 下标越界异常
- 数组属于引用类型,数组型数据是对象
数组赋值机制
-
基本数据类型赋值,这个值就是具体的数据,赋值方式为值拷贝,而且互不影响
-
数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值,是一个地址。
int[] arr1 = {1,2,3}; int[] arr2 = arr1;//把arr1的值赋给arr2
数组赋值
15.2、排序
排序介绍
-
排序是将一群数据,依照指定的顺序进行排列的过程
-
排序的分类
-
内部排列
指将需要处理的所有数据都加载到内部存储中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)
-
外部排序法
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)
-
冒泡排序法
-
基本思想:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素之间从前移向后部。
-
案例:将5个序列24,69,80,57,13使用冒泡排序法从小到大排序
- 分析
-
特点
15.3、多维数组—二维数组
-
二维数组的形式:
从定义形式上来看:
int[][]
int[][] arr ={{0,0,0,0,0,0,},{0,0,1,0,0,0}}
-
二维数组的使用方式
-
使用方式1—动态初始化
语法:
类型[][] 数组名 = new 类型[大小][大小]
比如:
int arr[][] = new int[2][3]
-
使用方式2—动态初始化
1)先声明:
类型 数组名[][];
2)再定义(开辟空间):
数组名 = new 类型[大小][大小]
3)赋值(有默认值,比如int 类型的就是 0)
-
使用方式3—列数不确定
例子:
int[][] arr = new int[3][]; //创建 二维数组,一共有3个一维数组,但是只确定一维数组的个数 for(int i = 0; i < arr.length; i++){//遍历arr每一个一维数组 //给每个一维数组开口空间 new //如果没有给一维数组 new ,那么 arr[i] 就是 null arr[i] = new int[i + 1]; //遍历一维数组,并给一维数组的每个元素赋值 for(int j = 0; j < arr[i].length; j++){ arr[i][j] = i +1; } }
-
使用方式4—静态初始化
定义:
类型[][] 数组名 = {{1,1,1},{8,8,9},{100},} //解读: //1.定义了一个二维数组arr //2.arr有三个元素(每个元素都是一维数组) //3.第一个一维数组有3个元素,第二个一维数组有3个元素,第三个一维数组有1个元素
-
-
二维数组的输出(遍历)
for(int i = 0; i < arr.length; i++){ //遍历二维数组的每个元素 //遍历二维数组的每个元素(数组) /*解读 * 1.arr[i] 表示 二维数组的第 i+1 个元素, 比如 arr[0]:二维数组的第一个元素 * 2.arr[i].length 得到 对应的 每一个元素的长度 */ for(int j = 0; j < arr[i].length; j++){ System.out.print(arr[i][j] + "\t"); //输出了一维数组 } System.out.println();//换行 }
-
二维数组的关键概念
- 二维数组的元素个数:arr.length(即行数)
- 二维数组的每一个元素是一维数组,所以要得到每一个一维数组的值,还需要再次遍历
- 如果访问第 i+1)个一维数组的第( j+1) 个值:
arr[i][j]
-
二维数组内存存储形式
15.4、数组的使用细节和注意事项
-
一维数组的声明方式:
int[] x 或者 int x[]
-
二维数组的声明方式:
int[][] y 或者 int[] y[] 或者int y[][]
-
二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。