一维数组和二维数组

我只是一个虾纸丫 提交于 2020-01-31 12:48:59

数组一个变量,存储一组相同类型数据的数据结构。

声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间

数组的基本要素
标识符
数组元素
元素下标:从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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!