数组
1.理解数组
在Java中,数组是用来储存一组相同类型数据的结构。当数组初始化完毕后,java为数组在内存中分配一段连续的空间,其在内存中开辟的空间也将随之固定,此时数组的长度也就不能发生改变。
2.定义数组
在Java中定义数组的语法如下:
数据类型[]数组名=new 数据类型[数组长度];
或者:
数据类型 数组名[]=new 数据类型[数据长度];
定义数组时一定要指定数组名和数组类型。
必须书写“[]”,表示定义了一个数组,而不是一个普通的变量。
“[数组的长度]"决定连续分配的空间个数,通过数组的length属性可以获取此长度。
数组的数据类型用于确定分配的每个空间大小。
3数组元素的表示与赋值
语法格式如下
数组名[下标值]
由于定义数组时内存分配的是连续的空间,所以数组元素在数组里顺序排列编号,该编号即元素下标,它表明了元素在数组中的位置。首元素的编号规定为0,因此,数组的下标一次为0、1、2、3、4、......依次递增,每次的增长数是1.
4.数组的初始化
语法格式如下
数据类型[]数组名={值1,值2,值3,......,值n};
或者:
数据类型[]数组名=new 数据类型[]{值1,值2,值3,......,值n];
5.遍历数组
在编写程序时,数组和循环往往结合在一起使用,可以大大的简化代码,提高程序编写率,通常使用for循环遍历数组。
关于数组下标越界
数组下标从0开始,而不是从1开始。如果访问数组元素时指定的下标小于0,或者大于等于数组的长度,都将出现数组下标越界异常。
二维数组
java中定义和操作多维数组的语法与一维数组类似。在实际应用中,三维及以上的数组很少使用,主要使用二维数组。其语法格式如下。
数据类型[][]数组名;
int[][]scores;
或者
数据类型 数组名[][];
int scores[][];
分配内存空间
scores=new int[5][50];
或者
int[][]scores=new int[5][50];
需要强调的是虽然从语法上看java支持多维数组,但从内存分配原理的角度看,java中只有一堆数组,没有多维数组。
二维数组的使用
1.初始化二维数组
定义二维数组并初始化数组元素的两种方法。
int[][]scores=new int[][]{{90,85,92},{76,63,80},{87}};
或者
int scores[][]={{90,85,92},{76,63,80},{87}};
Arrays类
JDK中提供了一个专门用于操作数组的工具类,即Arrays类,位于java.util包中。该方法提供了一系列方法来操作数组,如排序、复制、比较、填充等,用户直接调用这些方法即可,不需要自己编码实现,降低了开发难度。
Arrays类的应用
1.比较两个数组是否相等
Arrays类的equals()方法用于比较两个数组是否相等。只有当两个数组长度相等,对应位置的元素也一一相等时,该方法返回true;否则返回false。
2.对数组的元素进行升序排列
Arrays类的sort()方法对数组的元素进行升序排列,即以从小到大的顺序排列。
3.将数组转换成字符串
Arrays类中提供了专门输出组内容的方法-toString()fangfa1。该方法用于将一个数组转换成一个字符串。它按顺序吧多个数组连接在一起,多个数组元素之间使用英文逗号和空格隔开。
4.将数组所有元素赋值位相同的值
Arrays类的fill(arrays,val)方法用于把数组array的所有元素赋值为val。
5.将数组复制成一个长度位设定值的新数组
初始化一个整形一堆数组,使用Arrays类的copyOF()方法吧数组复制成一个长度为设定值的新数组。
6.查询元素在数组中下标
Arrays类的binarySearch()方法用于查询数组元素在数组中的下标。调用该方法时要求数组中的元素已经按升序排列,这样才能得到正确的结果。