数组
基本概述
数组分为:
一维数组、二维数组、多维数组
数组是相同数据类型的多个元素的容器。
这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;
除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”)。
一维数组本质就是一块连续的内存空间,可以在不同的存储单元记录不同的数据内容。
数组名称:类似于变量的名称,用于记录连续内存空间中的首地址
数组元素:主要指存放在数组内存空间中的数据内容。
数组长度:主要指数组中元素的个数,通常使用 数组名.length的方式来获取
数组下标:主要指数组元素的编号,从0开始一直到数组的长度-1.
数组的声明方式
<1>语法格式
数据类型[] 数组名称 = new 数据类型[数组长度];
例如:
int[] arr = new int[5];-表示声明一个长度为5个元素的类型为int的一维数组。
int num = 5; -表示声明一个初始值为5的int类型的变量num。
int arr[] = new int[5]; - 不推荐使用这种方式去做
<2>注意事项
1.当数组下标越界时候会在运行阶段产生:java.lang.ArrayIndexOutOfBoundsException: 数组下标越界
2.只有在声明数组时[]中的数字代表数组的长度,否则一律代表数组元素的下标;
<3>数组的初始化
数据类型[] 数组名称 = {初始值1,初始值2,初始值3,....}
例如:
int[] arr = {10,20,30,40,50};
int[] arr1 = new int[]{10,20,30,40,50};
int[] arr;
arr = {1,5,8,10};
<4>数组的复制
int[] arr = {1,3,5,7,9};
int[] arr1 = new int[10];
//System.arrayCopy(原数组,原数组要复制的起始位置,目标数组,起始位置,复制长度);数组的声明方式
冒泡排序
原理:比较两个相邻的元素,将值大的元素交换至右端。
int[] arr = {5,8,2,10,9}; //2 5 8 9 10
第一趟排序:
第一次排序:5和8比较,5不大于8,不交换 5,8,2,10,9
第二次排序:8和2比较 ,8大于2,交换位置 5 2 8 10 9
第三次排序 8和10比较,8不大于10 ,不交换位置 5 2 8 10 9
第四次排序 10和9比较,10大于9,交换位置 5 2 8 9 10
第二趟
第一次排序:
5和2比较,5大于2,交换位置 2 5 8 9 10
第二趟总共进行了1次比较, 排序结果 2 5 8 9 10
冒泡排序优点:
每进行一躺排序,就会少比较一次因为每进行一躺排序都会找出一个较大的值。一定程序减少算法量
二维数组
基本概念
一维数组本质上就是一段连续的内存空间,用于存放多个类型相同的数据。
二维数组本质就是由一维数组组成的数组,也就是说每个元素都是一个一位数组。
声明方式
<1>语法格式
数据类型[][] 变量名 = new 数据类型[m][n];
m:表示这个二维数组由多个个一位数组
n:表示每一个一维数组的元素个数
比如:
int[][] arr = new int[2][3]; - 表示声明一个具有2行3列的二维数组
arr代表数组的名称,也就是用于记录该数组内存空间的首地址
arr[0] 代表二维数组中的第一行,也就是一个一维数组
arr[0][0] 代表二维数组中下标为0行0列的元素,也就是第一个一个维数组中的第一个元素。
arr.length 代表二维数组的大小,也就是二维数组的行数。
arr[0].length代表就是二维数组中第一行的大小,也就是一维数组的大小,也就是列数
<2>二维数组的初始化
数据类型[][] 数组名称 = {{初始值},{初始值2},{初始值3}};
例如:
int[][] arr = {{1,3,5,7},{2,4,6},{8,9,10,11,15}};