前面的文章中,我们了解了数组创建方法等,我们本篇文章来了解一下数组的方法类Arrays,有了这个类,我们在日常写代码的时候就不不用自己去手动创建方法了😀。
我们之前学习到的打印数组方法是这样的,自己定义一个方法,然后打印出数组中的元素。
public class Demo
{
public static void main(String[] args)
{
int[] a = {1,2,3,4,5};
printArrays(a);
}
public static void printArrays(int[] array)
{
for(int i = 0; i<array.length;i++)
{
System.out.print(array[i]+"\t");
}
}
}
我们执行一下输出的结果。
1 2 3 4 5
进程结束......
我们正常输出一下a。
public class Demo
{
public static void main(String[] args)
{
int[] a = {1,2,3,4,5};
System.out.print(a);
}
}
我们执行一下输出的结果,会发现输出的是对象。
[I@1b6d3586
进程结束......
我们来使用Arrays输出一下。
import java.util.Arrays;//使用的时候自动生成导入的类
public class Demo
{
public static void main(String[] args)
{
int[] a = {1,2,3,4,5};
System.out.print(Arrays.toString(a));//Arrays.方法
}
}
我们执行一下输出的结果。
[1,2,3,4,5]
进程结束......
这种方法是,将数组转为字符串的方法,我们也可以自己去创作一下自己的方法,可以实现相同的功能。
public class Demo
{
public static void main(String[] args)
{
int[] a = {1,2,3,4,5};
printArrays(a);
}
public static void printArrays(int[] array)
{
for(int i = 0; i<array.length;i++)
{
if(i==0)//如果是0,输出[
{
System.out.print("[");
}
if(i==array.length-1)//如果是最后一个输出最后一个的元素加上]
{
System.out.print(array[i]+"]");
}
else
{
System.out.print(array[i]+", ");//逗号间隔
}
}
}
}
我们执行一下输出的结果,发现和上面的结果是一样的😀。
[1,2,3,4,5]
进程结束......
但是我们要避免自己创建重复的方法,因为这个方法是开发的时候开发者编写的,所以我们没有必要去重复编写相同功能的代码,直接拿过来用就可以了,这里只是让大家了解一下我们也可以自己模仿创建方法。
我们来看一下toString这个方法,开发者是如何编写的🤔
按住Ctrl键,然后点击toString就可以跳转到源码页面。
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
我们可以看到底层的代码是这个样子的,当然很多东西对于我们现在来说比较陌生,我们往后会一点点去深入这些方法具体的实现逻辑😀但是和我们刚刚自己写的代码原理是比较相似的。
我们重新定义一个数组,然后用排序的方法实现排序。
import java.util.Arrays;
public class Demo
{
public static void main(String[] args)
{
int[] a = {1,88,3,66,5};
Arrays.sort(a);
}
}
我们执行一下输出的结果,可以看到数组已经排序完成了,这比我们之前写的反转数组的方法要简单许多😀。
[1,3,5,66,88]
进程结束.......
我们可以看一下这个方法的源码。
public static void sort(int[] a) {
DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);
}
这里一样也是不需要看懂,就是简单了解一下就好。
public class Demo
{
public static void main(String[] args)
{
int[] a = {10,20,30,40,50};
Arrays.fill(a,2,4,0);//将2和4中间的数替换为0 2和4代表下标,不是数字2和4
}
}
我们执行一下输出的结果。
[10, 20, 0, 0, 50]
进程结束.......
我们可以看一下这个方法的源码。
public static void fill(int[] a, int fromIndex, int toIndex, int val)
{
rangeCheck(a.length, fromIndex, toIndex);//fromIndex是从哪个索引开始 toIndex是到哪个索引结束
for (int i = fromIndex; i < toIndex; i++)
a[i] = val;
}
以上就是常见的Arrays类中的方法,当然还有很多很多方法,大家可以看一下JDK帮助文档,或者Idea进入这个类查看一下结构😀