Java章节数组总结

数组就是具有相同数据类型的一组数据的集合。


一维数组
一维数组实际上是一组相同类型数据的线性集合

1、创建
在Java中数组作为对象允许使用new关键字进行内存分配。

在创建一维数组时,需要先声明再进行内存的分配。

在Java中,数组的声明有两种方式:

第一种方式是兼容了在C语言中数组的声明,在Java中通常使用第二种方式进行数组的声明。

在进行数组的声明后,需要为数组分配内存空间才能对数组进行操作。
例如:

 

 在Java中对数组的使用是通过下标来进行的,通过对有效下标来进对数据的操作。

   

 需要注意的是,在Java中数组的有效下标是从0开始的,也就是说,一个数组拥有n个数据的内存空间,但是这个数组的有效下标是在 [0,n-1] 这个闭区间内的,超过这个区间的下标值是无效的,且会造成越界访问引发异常

 

2、数组的使用

在了解了数组的声明与创建后,那如何使用一维数组内,且看下文。

 

 

 上述代码的有效下标在 [0,11] 之间,对该数组访问第12个下标的数据,那么程序将会报错。

 是如果每次循环都需要从数组0下标访问到数组n-1个下标的话,那么难道我们每次都需要手动计算数组的长度,然后再写一个数字上去吗?不是的,这个不仅不利于程序的可读性,也不利于程序的维护与复用。在Java中创建并声明数组后,系统会自动的计算好该数组的长度,且将这个计算好的数组长度赋值给一个int类型的常量length,且这个length是一个属性值,在数组创建后与数组”绑定在一起了“,通过 数组名.length 调用。

二维数组

定义,如果一维数组中的各个元素仍是一个数组,那么它就是二维数组

图示

1、创建

二维数组的常见语法是与一维数组的创建时一样的,只不过多了一个行列的概念

二维数组的初始化

数组名= new 数组元素的类型[ ] [ ]{{值1,值2,…},{值1,值2,…},{值1,值2,…}};

二维数组的赋值

数组名[行号] [列号]=值;


2、二维数组的使用
在二维数组中,对数组的每个元素继续访问的方法也是通过效果,对于下标的范围是与一维数组一样的,上文有说过,这里就不再复述了。

  

 

 

3、Arrays类方法的使用
在Java中提供了多种多样的方法供使用者使用,这些方法都是Java官方提供的,已经封装好的,我们适当的使用这些提供的方法,能有效的减少代码的冗余度。

需要注意的是,在使用Arrays类中的方法前,都需要提前包。

import java.util.Arrays;//导入类


1. fill(int[ ] a,int value)

该方法可将指定的int值分配给int型数组的每个元素

a:要进行元素替换的数组
value:指定的数据值

例如:

 

 

 

2. fill(int[ ] a,int fromIndex,int toIndex,int value)

在数据填充到数组中指定的区间中,左闭右开区间,[fromIndex,toIndex)。若fromIndex==toIndex,则填充范围为空。

例如

 

 

3.copyOf(int[ ] arr,int newlength)

数组的完全复制,返回一个与arr数组元素相同的数组。
newlength:复制后的新数组的长度,空位补0,溢出去掉

例如:

 

 

4.copyOfRange(arr,int fromIndex,int toIndex)

数组元素的区间复制,左闭右开区间,[fromIndex,toIndex)。
fromIndex:开始下标
toIndex:结束下标(不包括)

例如

 

 

数组的操作
1.sort(object)
数组元素排序方法

Arrays.sort(数组名);


2.binarySearch(Object[ ] a,Object key)
在a数组中查询key的下标位置,并且返回该下标。

数据查询方法,该方法底层实现是通过二分搜索来查找key,所以在使用该方法前,需要让数组有序

 

 

3.指定区间内查询

左闭右开区间,查找的返回包括前索引,但是不包括后索引。

目标值下标=Arrays.binarySearch(数组名,前索引,后索引,元素);

例如:

 

 

注意,String是字符串类型


 

4.冒泡排序

冒泡算法由双层循环实现,其中外层循环用于控制排序轮数

例如:

 

 

5.直接排序

循环将最大的数放到最后,固定不动,第二次再将最大的数放到最后,固定不动,往后继续。

例如:

 

 

6.反转排序

简称倒排,将数组中的元素倒序一遍。

代码:

 

 

end

以上所述,如有错误,望指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值