Java数组与Arrays类方法的使用

导读:本篇文章讲解 Java数组与Arrays类方法的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

一、数组基本概念

1、数组

2、声明数组

3、初始化

4、注意事项

二、Arrays类常用方法介绍

1、包的导入

2、打印数组

3、数组填充

4、数组拷贝

5、数组排序

6、数组搜索

7、数组比较

三、总结


一、数组基本概念

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类里面的方法若涉及操作数组某段区间数据元素的,区间一般都是左闭右开

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQXJpY2wu,size_20,color_FFFFFF,t_70,g_se,x_16

 

学习Java是一个循序渐进的过程,如同它的Logo一般,你若细品,愈久弥香!

都看到底了,不妨点个赞哈

持续更新…

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93494.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!