01 一维数组的概念
当需要在Java程序中记录多个相同数据类型的数据时,需要声明一个一维数组即可,一位数组的本质是在内存空间中申请一段连续的存储单元。
数组是相同数据类型的多个元素的容器,元素按线性排列,在Java中体现为一种引用数据类型
02 一维数组声明方式
一维数组声明语法格式:数据类型[] 数组名=new 数据类型[数组长度];
int[] arr=new int[6];
调用数组的length属性可以获取数组的长度。
对于数组内容的访问是通过下标方式进行访问,需要注意的是数组的下标是从0开始的,对于长度为n的数组,下标范围为0~n-1
03 一维数组的初始化
首先需要说明的是基本类型的数组(数据元素为基本数据类型)创建后,其元素的初始值:byte、char、int、long为0;float和double为0.0;boolean为false
数组的初始化有两种方式:动态方式和静态方式
-
静态方式 在数组声明的同时进行初始化,具体如下:
数据类型[] 数组名={初始值1,初始值2,........};
-
动态方式 先对数组进行声明,随后再对数组进行初始化,具体如下:
int[] arr=new int[3]; for(int i=0;i<arr.length;i++){ arr[i]=i; }可以看出来,静态方式是不给出数组的长度,而是直接给出数组的所有元素的初始值;动态方式则是先给出数组的长度,并没有给出数组的所有元素的初始值。
04 内存结构
内存结构有栈区和堆区,两中结构的具体功能如下:
-
栈区用于存放程序运行过程中所有的局部变量。一个运行的Java程序从开始到结束会有多次变量的声明。
-
JVM会在内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用new关键字创建的数组和对象。
05 数组的优缺点
数组的优点:可以直接通过下标的方式访问指定位置的元素,速度很快。
数组的缺点:数组要求所有元素的类型相同;数组要求内存空间连续,并且长度一旦确定就无法修改;数组增加和删除元素需要移动大量元素,效率低
06 数组工具类
Java.util.Arrays类可以实现对数组元素的遍历、查找、排序等操作。
常用方法如下:
07 数组笔试考点
对于下面代码,能否实现数组a的元素拷贝到数组b
int[] a={1,2,3};
int[] b=new int[6];
b=a;
答:对于上面的代码,数组变量名的实质是数组存储在堆区中内存地址,b=a会将数组a的内存地址赋值给数组b,而不是将数组a中的数据赋值给数组b,这样数组b将会指向数组a所在的内存空间,这时候a和b数组可以看做是同一个数组。
08 二维数组
二维数组本质上是由多个一维数组组成的数组,二维数组中的每个元素都是一维数组,而一维数组中的每个元素才是二维数组的数据内容
声明的语法格式是:数据类型[] [] 数组名称=new 数据类型[行数] [列数]
初始化格式:数据类型[] [] 数组名称={ {元素1,元素2,元素3,....},{}..........}