JAVA数组的相关介绍及Arrays相关内容介绍

本文详细介绍了Java中数组的使用,包括一维和二维数组的声明、分配空间、初始化和访问。讲解了如何通过下标访问数组元素,以及如何使用Arrays类的方法如fill、sort、copyOf和copyOfRange进行数组操作。此外,还讨论了binarySearch方法用于数组元素的二分查找,以及compare和equals方法在数组比较中的应用。
摘要由CSDN通过智能技术生成

JAVA数组的学习

引语:当存放相同类型的数据时,如果一个一个的存放会导致有过多的变量名,考虑使用一个数组变量来存放它们,并通过下标来访问存在数组中的每个成员

一维数组

为了生成可用的数组,我们不仅仅要声明数组(给予名称,成员类型的属性),还要为之分配内存空间,之后进行自动初始化或人工初始化

声明数组

方法如下:

数据类型 数组名 [ ] 或 数据类型 [ ] 数组名

分配空间

方法如下:

数组变量名 = new 数据类型 [数组长度]

也可以在定义数组的同时分配空间,例如:

int temp[] = new int[10];

注:数组一旦生成,就不允许再增加它的空间

数组的初始化

自动初始化:

数值型的初始值:0;

字符型的初始值:’\0’;

布尔类型的初始值:false;

类对象的初始值:null;

也可以主动地人工赋值通过下标一个一个的进行赋值,或是在声明数组后直接进行初始化,此时系统会自动确定数组的长度,自动给其分配空间,格式如下:

数据类型 数组名 [ ] = {值1,值2……,值n}

注:整体初始化是可以的,但不可整体赋值,如:

char s[ ] = new char[5];

s[ ] = {'a','b','c','d','e'} ;

访问数组

通过下标进行访问,方法如下:

数组名 [下标]

二维数组

如何理解多维数组

从二维数组讲起,例如:

int temp [] [] = new int [2] [3];

可以理解为生成了两行三列的数组,但更好理解且通用的方式是数组套数组的形式,就像这个例子一样,先生成长度为2的数组,再在每个数组中生成长度为3的数组,就像分叉的树枝一样

数组的常用方法

如何获取数组长度

数组名.length

如何更简单的遍历一个数组

使用for……each语句,例如:

//已将数组初始化或赋值

for(int e : a){
sum = sum+e;
}

该程序中的冒号“:”表示in的意思,for(int e : a)就是 for each int e in a,即“对于数组a中的每个整数e”。通过定义一个整数变量e表示数组中的每个元素。

打印一个数组

除了使用System.out.println()等类似方法之外,还有display(数组名),用于一下展示数组的全貌,中间用空格隔开,输出完毕时换行

Arrays类

Arrays类及基本使用

为了更方便的操作数组,java在包java.util定义了个Arrays的类,该类包含了几个用static修饰的静态方法

  • 使用import java.util.Arrays;导入该类;
  • 使用Arrays.方法名(数组)操作数组。

Arrays 类常用方法

方法名用法
toString 方法该方法主要返回数组元素的字符串形式
equals方法比较两个数组内容是否相等
fill 方法该方法主要用于替换数组中的元素
sort 方法该方法主要用于给数组元素排序
copyOf 方法该方法主要用于复制数组
copyOfRange 方法该方法主要用于复制数组,需要指定起始位置
binarySearch 方法该方法主要用于查找指定元素索引值
compare方法按字典顺序比较两数组
fill 方法详细介绍

fill 方法用来替换数组中的元素。它既可以直接替换数组中所有元素,也可以通过指定索引范围来替换部分元素。

直接替换数组中所有元素:

fill(arr, value)

参数说明:

  • 第一个参数(arr)为数组;
  • 第二个参数(value)为替换值。

示例:把数组中所有元素替换成 8。

 public static void main(String[] args) {        
 int [] arr={2,3,4,8,-2,0,-43,88};        
 Arrays.fill(arr,8);     // 使用fill方法把数组中所有值替换成8        System.out.println(Arrays.toString(arr));     // 打印新数组中的值    
 }

执行结果:

[8, 8, 8, 8, 8, 8, 8, 8]

替换部分元素

fill(arr, fromIndex,toIndex, value)

参数说明:

  • 第一个参数(arr)为数组;
  • 第二个参数(fromIndex)为数组中需要被替换的起始索引值(包含);
  • 第三个参数(toIndex)为数组中需要被替换的结束索引值(不包含);
  • 第四个参数(value)为替换值。

示例:把数组中部分元素替换成 8。

 public static void main(String[] args) {        
 // 请在Begin-End间编写代码        
 /********** Begin **********/        
 int [] arr={2,3,4,8,-2,0,-43,88};        
 Arrays.fill(arr,1,5,8);     // 使用fill方法把数组中部分值替换成8        System.out.println(Arrays.toString(arr));     // 打印新数组中的值        /********** End **********/    }

执行结果:

[2, 8, 8, 8, 8, 0, -43, 88]
sort 方法详细介绍

sort 方法用于给数组元素排序,默认排序方式为升序。

示例:

    public static void main(String[] args) {        
    int [] arr={8,2,7,84,12,1,786,92,34};     // 定义原数组        Arrays.sort(arr);     // 对数组元素排序        System.out.print(Arrays.toString(arr));     // 打印数组    
    }

执行结果:

[1, 2, 7, 8, 12, 34, 84, 92, 786]
copyOf 方法和 copyOfRange 方法详细介绍

copyOf 方法和 copyOfRange 方法都用于复制数组,其中 copyOfRange 方法需要指定起始位置。 示例:

public static void main(String[] args) {        
int [] arr={8,2,7,84,12,1,786,92,34};     // 定义原数组        
int[] ints = Arrays.copyOf(arr, 4);// 复制数组,第二个参数指定新数组长度         
// 复制数组,当指定新数组长度大于原数组时,会填充默认值        
int[] ints1=Arrays.copyOf(arr,10);           System.out.println(Arrays.toString(ints));     // 打印数组             System.out.print(Arrays.toString(ints1));     // 打印数组        
int[] ints2 = Arrays.copyOfRange(arr, 2, 4);     
// 复制数组,第二、三个参数指定索引值        
// 复制数组,当指定新数组长度大于原数组时,会填充默认值        
int[] ints3 = Arrays.copyOfRange(arr, 0, 10);             System.out.println(Arrays.toString(ints2));     // 打印数组        System.out.print(Arrays.toString(ints3));     // 打印数组    
}

执行结果:

[8, 2, 7, 84]
[8, 2, 7, 84, 12, 1, 786, 92, 34, 0]
[7, 84]
[8, 2, 7, 84, 12, 1, 786, 92, 34, 0]
binarySearch 方法

binarySearch 方法用于查找指定元素索引值。因为该方法使用的是二分法查找,所以在调用该方法之前,必须先调用 sort() 方法进行排序,如果数组没有排序,那么结果是不确定的。

示例:

 public static void main(String[] args) {        
 int [] arr={8,6,84,12,3,786,7,34};     // 定义原数组        
 int i = Arrays.binarySearch(arr, 7);     // 未对数组排序,直接查找元素               System.out.println(i);     // 打印索引值       
 Arrays.sort(arr);     // 对原数组排序        System.out.println(Arrays.toString(arr));     // 打印排序后的数组       
 int x = Arrays.binarySearch(arr, -2);     // 排序后查找数组中不存在的元素,不存在则会输出-1       
 int y = Arrays.binarySearch(arr, 7);     // 排序后查找数组中存在的元素        System.out.println(x);     // 打印索引值       
 System.out.print(y);     // 打印索引值   
 }

执行结果:

-3[3, 6, 7, 8, 12, 34, 84, 786]-12
compare方法和equals方法的使用

两方法的常用使用一致,compare(数组1,数组2),equals(数组1,数组2),前者是根据字典逐一比较数组中的元素,并返回布尔值,而后者则是比较两数组中的内容是否相同,并返回布尔值,当然还有“==”的方法,此时比较的不是两数组中的内容是否相同,比较的是两数组的地址是否相同,据此返回布尔值

具体方法的详细使用,需参看 JDK 11 API java中文帮助文档

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值