1、概念
当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可,一维数组本质上就是在内存空间中申请一段连续的存储单元。
数组是相同数据类型的多个元素的容器,元素按线性顺序排列,在Java语言中体现为一种引用数据类型。
2、声明方式
数据类型[] 数组名称=new 数据类型[数组长度]
调用数组的length属性可以获取数组的长度
可以通过下标的方式访问数组中的每一个元素。需要注意的是:数组的下标从0开始,对于长度为n的数组,下标范围是0~n-1。
语法格式:
int[] arr =new int[];
相关概念:
数组名:用于记录一维数组在内存空间中的地址信息,便于下次访问。
数组元素:主要指存放在数组中的数据内容。
数组长度:主要指数组中最多可以存放的元素个数,通常使用数组名.length获取
数组下标:主要指数组元素在数组中的编号,从0开始可以取到长度-1
int arr1[] = new int[];
int[] arr =new int[]; 动态方式
两种方式从结果上来说是一样的,但是第一种不推荐使用;第二种方式更推荐,它更容易与变量的声明区分,提高了代码的可读性。
3、一维数组的初始化
基本类型的数组创建后,其元素的初始值:byte、short、int 、long为0;float double为0.0;boolean为false
在数组声明的同时进行初始化:
数据类型[] 数组名称={初始值1,初始值2......};
静态方式
特殊写法:静态方式
boolean[] arr=new boolean[]{true,true,false,false};
4、内存结构之栈区
栈用于存放程序运行过程当中所有的局部变量。一个运行的Java程序从开始到结束会有多次变量的声明。
JVM会在其内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用new关键字创建的数组和对象。
5、数组的优缺点
(1)优点
可以直接通过下标(或索引)的方式访问指定位置的元素,速度很快。
(2)缺点
①数组要求所有元素类型相同。
②数组要求内存空间必须连续,并且长度一但确定就不能修改
③增加和删除时可能移动大量元素,效率低。
6、System.arraycopy(Object src ,int src, Object dest,int destPos,int length)
将指定数组中的数组从指定位置开始复制到目标数组的指定位置
Object src:数据从哪儿来
int src:数据开始的的位置
Object dest:数据到哪儿去
nt destPos:数据目标地址的起始下标
int length:元素个数
7、数组2=数组1;
数组1的内存空间中存放的是数据在堆区中的内存地址信息,赋值后让数组2变量中存放了数组1所指向堆区的内存地址。也就是让数组2和数组1指向了同一块堆区空间,本质上是改变指向而已。
8、java.util.Arrays类可以实现对数组中元素的遍历、查找、排序等操作。
Arrays.fill(数组名,值);
Arrays.equals(数组名1,数组名2);
Arrays.sort(数组名1);
Arrays.binarySearch(数组名,查找的数值);
9、二维数组的概念
二维数组本质上就是由多个一位数组摞在一起组成的数组,二维数组中的每个元素都是一维数组,而一维数组中的每个元素才是数据内容。
10、二维数组的声明方式
int[][] arr = new int[行数][列数];
arr.length代表二维数组arr的长度,也就是元素的个数,也就是一维数组的个数,也就是行数。
arr[0].length代表二维数组中第一个元素的长度,也就是一维数组的长度,也就是第一行的列数。
11、二维数组的初始值
int[][] arr = {{11,22,33,44},{55,66,77,88}};
int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[4];
arr[0] = new int[5];