今天的小知识是关于java的Arrays类(数组操作的工具类)的学习。
首先,我们先了解Arrays类是啥,关于Arrays类:
Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法
使用时导包:
import java.util.Arrays
其次,了解该类有哪些方法以及如何使用:
Arrays类包含用于操作数组的各种方法(如排序和搜索)。
该类还包含一个静态工厂,可以将数组视为列表。“静态工厂”说明Arrays类包含许多静态方法,以便程序员编程时方便调用。(提到静态方法的调用,我们即可以像实例方法一样采用
对象.方法名 进行调用(不推荐);也可以采用 类名.方法名 进行调用 (推荐).)
下面介绍一些Arrays类的常用方法:
1.Arrays.toString(数组名 a)
public static String toString(类型[] a) //使用时记得将类型更改为相应的数据类型
方法作用: 返回指定数组的内容的字符串表示形式。 字符串表示由数组元素的列表组成,括在方括号( "[]" )中。 相邻的元素由字符", "
(逗号后跟一个空格)分隔开。 元素被转换为字符串由String.valueOf(short)。 返回"null"如果a是null。
为什么要采用这个方法呢?不可以直接:
System.out.println(a); //a为数组名
首先这是肯定不行的,因为这样输出的是数组a的地址;
当然我们也可以采用for循环的方法将数组中元素逐一输出,虽然这样是可行的,但如果我们仅仅只是想看数组中具有哪些元素,没必要这么做,用Arrays.toString(数组名)
便可以直接输出数组中的内容。
测试代码:
import java.util.Arrays; public class Dem1 { public static void main(String[]
args) { int[] a= {1,4,3,2}; System.out.println(a);
System.out.println(Arrays.toString(a)); } }
运行结果:
[Ljava.lang.Integer;@5ca881b5 [1, 4, 3, 2]
2.Arrays.sort(组名 a)
public static void sort(类型[] a)
对数组进行默认升序排序。
实施注意事项:排序算法是由Vladimir Yaroslavskiy,Jon Bentley和Joshua Bloch提供的双轴快速排序。
该算法在许多数据集上提供O(n log(n))性能,导致其他快速排序降级为二次性能,并且通常比传统(单轴)Quicksort实现更快。
对于我们小白对数组进行排序无疑是采用for循环语句来实现,可以说也是比较头疼的,所以Arrays类中提供的sort()方法无疑是造福小白啊。
下面是代码测试:
import java.util.Arrays; public class Dem1 { public static void main(String[]
args){ int[] a= {1,4,3,2}; System.out.println(Arrays.toString(a)); //排序前数组中的内容
Arrays.sort(a); System.out.println(Arrays.toString(a)); //排序后数组中的内容 } }
运行结果:
[1, 4, 3, 2] //排序前 [1, 2, 3, 4] //排序后
3.Arrays.equals(数组名1,数组名2)
public static boolean equals(类型[] a,类型[] a2)
如果两个指定的数组彼此相等 ,则返回true 。
如果两个数组都包含相同数量的元素,则两个数组被认为是相等的,并且两个数组中所有对应的元素对都相等。
换句话说,如果两个数组以相同的顺序包含相同的元素,则它们是相等的。 另外,如果两个数组引用都是null,则它们被认为是相等的 。
注意:比较的两个数组的类型必须一致!!!
测试代码:
import java.util.Arrays; public class Dem1 { public static void main(String[]
args){ int[] arr1= {1,4,3,2}; //原数组 int[] arr2= {1,6,5,7}; //数组元素个数相同,元素不同
int[] arr3= {1,4,3,2,5}; //数组前面元素相同,个数不同 int[] arr4= {1,4,3,2}; //数组元素及个数都相同
double[] dou= {1,4,3,2}; //数组元素及个数都相同, 但数组类型不同
System.out.println(Arrays.equals(arr1, arr2));
System.out.println(Arrays.equals(arr1, arr3));
System.out.println(Arrays.equals(arr1, arr4)); //
System.out.println(Arrays.equals(arr1, dou)); 报错 } }
运行结果:
false //数组元素个数相同,元素不同 false //数组前面元素相同,个数不同 true //数组元素及个数都相同
报错信息:
Exception in thread "main" java.lang.Error: 无法解析的编译问题: 类型 Arrays 中的方法
equals(int[], int[])对于参数(int[], double[])不适用 语法错误,将“VariableDeclarators”插入到完整
LocalVariableDeclaration 中 语法错误,将“;”插入到完整 LocalVariableDeclarationStatement 中
无法解析 报错
今天的知识分享就到这里,感谢大家的阅读!(小白记录学习,也请大佬多多指教;本文的方法及其介绍都是在jdk1.8
API帮助文档进行查找的,如果有不对的可能是翻译问题,也可能是手贱打错了(狗头)。然后帮助文档的话,大家可以网上搜哈,资源很多,找不到也可以私信我。)