目录
一、数组基本概念
1、数组
数组是一种常用的数据结构,是用来存储同一类型值的集合。可通过一个整型下标(index,或称为索引)来随机访问数组中的任意值。
2、声明数组
语法:数据类型 数组名 [ ] = new 数据类型 [ 大小]
或者 数据类型 [ ] 数据类型 = new 数据类型 [ 大小]
如:int a[ ] = new int [ 5]或 int [ ] a = new int [5] 创建一个空间大小为5的整型数组a
3、初始化
静态初始化:即在声明数组时给定数组值,由系统自动判断长度
语法:数据类型 数组名 [ ] = {元素值,元素值……}
如:int a [ ] = {1,2,3,4,5}
相当于 int a [ ] = new int [5]; a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;
动态初始化:即只声明数组并给定长度,有系统给出默认初始化值
语法:数据类型 数组名 [ ] = new 数据类型 [ 大小] (数组名与[ ] 前后位置可因人而异)
如:int a [ ] =new int [5] 则系统将数组a中的值都初始化为默认值0
数组类型 | 默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
char | \u0000 |
boolean | false |
String | null |
4、注意事项
(1)数组是多个相同类型数据的集合,实现对数据的统一管理。
(2)数组中的元素可以是任意类型,包括基本数据类型和引用类型,不能混用。
(3)数组使用步骤:声明数组并开辟空间,初始化,使用。
(4)数组的下标是从 0 开始,和序列号不一致。
(5)数组的下标必须在指定有效范围内使用,否则会有“下标越界”的异常。
(6)数组属于引用类型。
二、Arrays类常用方法介绍
顾名思义,Arrays类中包含了操作数组的各种方法,下面整理一些常用方法
1、包的导入
这是使用的前提,必须先导入包。
import java.util.Arrays;
2、打印数组
函数static String toString(xxx[] a),返回包含a中所有元素的一个字符串,并且元素用中括号包围,用逗号隔开。(xxx为数组的数据类型,下面同理)
int [] a = new int[5];
System.out.println(Arrays.toString(a));
//输出:[0,0,0,0,0]
3、数组填充
(1)全部填充
函数static void fill(xxx[] a,xxx v)将数组的所有数据元素设置为v
int [] a = new int[5];
Arrays.fill(a,6);
System.out.println(Arrays.toString(a));
//输出[6,6,6,6,6]
(2)区间填充
函数static void fill(xxx[] a,int start,int end,v)
将数组中下标区间为[begin,end)的区间里的所有元素设置为v
(注意:这里的begin和end均指的是下标而不是序号,并且区间为左闭右开)
int [] a = new int[5];
Arrays.fill(a,2,4,6);
System.out.println(Arrays.toString(a));
//输出:[0,0,6,6,0]
4、数组拷贝
(1)全部拷贝
函数static xxx[ ] copyOf(xxx[] a,int end)
返回与a同类型的数组并且数组元素为a中区间为[0,end)的元素值
int [] a = {1,2,3,4,5};
int [] b =Arrays.copyOf(a,5);
System.out.println(Arrays.toString(b));
//输出[1,2,3,4,5]
(2)区间拷贝(截取数组)
函数static xxx[ ] copyOfRange(xxx[] a,int start,int end)
返回与a同类型的数组并且数组元素为a中区间为[start,end)的元素值
int [] a = {1,2,3,4,5};
int [] c =Arrays.copyOfRange(a,1,5);
System.out.println(Arrays.toString(c));
//输出[2,3,4,5]
5、数组排序
(1)全部排序
函数static void sort(xxx[ ] a)
使用优化的快速排序算法对数组进行排序 ,默认为升序排列
int [] a = {5,7,2,3,-8};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//输出[-8,2,3,5,7]
(2)区间排序
函数static void sort(xxx[ ] a,int start,int end)
将a中下标在区间[start,end)的元素进行部分排序,其它元素不变
int [] a = {5,7,2,3,-8};
Arrays.sort(a,0,3);
System.out.println(Arrays.toString(a));
//输出[2,5,7,3,-8]
6、数组搜索
(1)全局搜索
函数static int binarySearch(xxx[ ] a,xxx v)
在有序数组a中使用二分查找算法进行查找值v,如果找到则返回对应的下标值,否则返回一个负值r。 (-r-1即为v应该插入的位置以保持a有序)
int [] a = {5,7,2,3,-8};
Arrays.sort(a);
System.out.println(Arrays.binarySearch(a,7));
//输出 4
int [] a = {5,7,2,3,-8};
Arrays.sort(a);
System.out.println(Arrays.binarySearch(a,6));
//输出 -5 即为保持有序应该将其插入到-(-5)-1即下标为4的位置
(2)局部搜索
函数static int binarySearch(xxx[ ] a,int start,int end,xxx v)
在a中区间[start,end)内查找值v,找到则返回对应下标,否则返回一个负值r。
int [] a = {5,7,2,3,-8};
Arrays.sort(a);
System.out.println(Arrays.binarySearch(a,0,3,3));
//输出 2
7、数组比较
函数static boolean equals(xxx [] a,xxx [] b)
如果两个数组大小相同,并且下标相同的元素都对应相等,则返回true,否则返回false
int [] a = {5,7,2,3,8};
int [] b = {5,7,2,3,8};
int [] c = {1,2,3,4,5};
System.out.println(Arrays.equals(a,b));//输出 true
System.out.println(Arrays.equals(a,c));//输出 false
三、总结
(1)数组下标从0开始!(地球人都知道,但这确实是一个易错点)
(2)数组是引用类型,数组内的元素均为同类型的数据元素,不可混用。
(3)数组的使用,尤其要注意“下标越界”问题,有时候定义长度宁愿大一点但不能小。
(4)Java实际上没有多维数组,只有一维数组。多维数组被解释为“数组的数组”。
(5)数组之间的赋值是引用传递,即赋的值是地址,这与基本数据类型之间的赋值有所不同。
前者相互影响(指针指向发生改变),后者互不影响(指针指向未变,仅是值拷贝)。
(6)Arrays类里面的方法若涉及操作数组某段区间数据元素的,区间一般都是左闭右开。
学习Java是一个循序渐进的过程,如同它的Logo一般,你若细品,愈久弥香!
都看到底了,不妨点个赞哈
持续更新…
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93494.html