数组一个变量,存储一组相同类型数据的数据结构。
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
数组的基本要素
标识符
数组元素
元素下标:从0开始
元素类型
数组长度固定不变,避免数组越界
一维数组
使用数组
声明数组:告诉计算机数据类型是什么(声明数组时不规定数组长度)
数据类型 数组名[];
数据类型[] 数组名;
分配空间:告诉计算机分配几个连续空间
数据类型[] 数组名 = new 数据类型[大小]; .....声明数组并分配空间
数组元素根据类型不同,有不同的初始值
赋值:像分配的格子里放数据
数组赋值
方法1:边声明边赋值
int[] scores = {89, 79, 76};
int[] scores = new int[]{89, 79, 76}; ......不能指定数组长度
方法2:动态地从键盘录入信息并赋值
处理数据
scores.length …数组长度
数组与内存
栈内存:存引用(变量名,类名等)
堆内存:存储数据
引用数据类型的存储方式
基本数据类型存储方式不区分栈内存、堆内存,只是在内存中找个空间存储数据
ArrayIndexOutOfBoundsException数组越界异常
二维数组
二维数组实际上是一个一维数组,它的每个元素又是一个一维数组
一维数组{1,2,3,4,5}
二维数组{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}
数据类型[] []数组名 = new 数据类型[大小][]; .....声明数组并分配空间
数据类型 数组名[] [] = new 数据类型[大小][];
冒泡算法
Arrays类操作数组
理解二维数组的使用
每次比较相邻的两数
小的交换到前面
每轮结束后最大的数交换到最后
N个数字来排队
两两比较小靠前
外层循环N-1
内层循环N-1-i
时间复杂度
空间复杂度
查找方法快捷键
ctrl+shift+t
或输入Arrays.sort,按住ctrl进入方法
equals(a,b) boolean 比较两个数组是否相等
sort(array) void 升序
toString(a) String
fill(array,val) void 将数组中的元素都赋值为val
copyOf(array,length) 与array数据类型一致 将一个数组array赋值为一个新数组长度为lenght
binarySearch(array,val) int 搜索val在数组array的下标
多维数组
三维及以上的数组很少使用
主要使用二维数组
从语法上Java支持多维数组
从内存分配原理的角度讲,只有一维数组
数据类型[][] 数组名;
或者
数据类型 数组名[][]
定义二维数组时,要定义最大维数
int[][] scores = new int[5][]
二维数组实际上是一个以一维数组为元素的一维数组
总结
数组的下标都是从0开始的
一维数组
int array[] = new int [数组长度];
int array[] = new int []{值1,值2,值3};
或者
int array[] = {值1,值2,值3};
二维数组
int array[] [] = new int [数组长度] [数组长度];
int array[] [] = new int [][]{{值1,值2,值3},{值1,值2,值3},{值1,值2,值3}};
或者
int array[] [] ={{值1,值2,值3},{值1,值2,值3},{值1,值2,值3}};
数组中的equals 时被重写了的 先比较长度再比较内容
冒泡排序
外层循环控制趟数,趟数为数组长度-1
内层控制每趟比较的次数 为n-1-i
来源:CSDN
作者:小博丶
链接:https://blog.csdn.net/weixin_45412875/article/details/104111330