【JavaSE篇】——数组练习

目录

数组转字符串

数组拷贝

拷贝的实质

copyOf方法(new)

copyOf扩容 

arraycopy方法(局部的拷贝)(系统类)

copyOfRange方法(局部拷贝)

原数组.clone()

Arrays.fill

Arrays.equal

sort

❗总结


Java 中提供了 java.util.Arrays , 其中包含了一些操作数组的常用方法.

.Array;      操作数组相关的工具类. 

【JavaSE篇】——数组练习_第1张图片


数组转字符串

【JavaSE篇】——数组练习_第2张图片

【JavaSE篇】——数组练习_第3张图片

数组——>字符串 {1,2,3,4}——>[1,2,3,4],我们发现转换成字符串之后是这样的,这是java中自带的,我们可以自己去实现toString,toString是库函数里面的,我们可以自己实现一个。

    public  static  String   myString(int[] a)
    {
        if(a==null)return null;
        String ret="[";
        for (int i = 0; i < a.length; i++) {
            if(i!=a.length-1){
                ret+=a[i]+",";
            }
            else {
                ret += a[i];
            }
        }
        ret+="]";
        return ret;
    }
    public static void main(String[] args) {
        //int[] a={1,2,3,4};
       // int[] a=null;
        int[] a={};
        String result=myString(a);
        System.out.println(result);
    }

数组拷贝

拷贝的实质

首先我们谈一谈什么是拷贝?——拷贝的前提是要有原内容产生一个一模一样的内容,叫做拷贝。

这算拷贝嘛?——不是,因为没有产生新的内存空间。

真正的拷贝是自己开辟一个和原数组一模一样的空间大小,然后将每个值依次拷贝进去,而不是没有开辟的新空间。

【JavaSE篇】——数组练习_第4张图片

  public static void main(String[] args) {
        int[] array={1,2,3,4};
        //int [] array2=array;
        int[] array2=new int[array.length];
        for (int i = 0; i 

copyOf方法(new)

java中不用自己手动实现数组的拷贝,它提供了一个copyOf方法。  

【JavaSE篇】——数组练习_第5张图片

【JavaSE篇】——数组练习_第6张图片 copyOf方法在进行数组拷贝时,创建了一个新的数组 array2和array引用的不是同一个数组,我们可以ctrl+左鼠标键可以看到copyOf的底层代码,已经给copy这个数组进行开辟空间。

 public static void main(String[] args) {
        int[] array={1,2,3,4};
        int[] array2=Arrays.copyOf(array,array.length);
        System.out.println(Arrays.toString(array2));
    }

copyOf扩容 


copyOf方法可以扩容,只不过新开辟的数组长度都默认初始化是0.

【JavaSE篇】——数组练习_第7张图片


arraycopy方法(局部的拷贝)(系统类)

这个方法的底层是无法看到的,由native修饰的方法底层是c/c++语言写的。(速度快)

【JavaSE篇】——数组练习_第8张图片

【JavaSE篇】——数组练习_第9张图片前面从第几个位置开始拷贝,那么后面的拷贝长度就相应的减几。(从原数组的第二个位置拷贝到新数组的开始位置)——前2个拷贝不到。

【JavaSE篇】——数组练习_第10张图片(从原数组的开始位置拷贝到新数组的第二个位置)长度也得减2——只不过后俩个拷贝不到。


copyOfRange方法(局部拷贝)

【JavaSE篇】——数组练习_第11张图片

【JavaSE篇】——数组练习_第12张图片


原数组.clone()

【JavaSE篇】——数组练习_第13张图片


Arrays.fill

fill方法重载了很多类型,不止是int类型,可以让整个数组的值都改成一个值,也可以让数组中的一个区间改成某个值。

【JavaSE篇】——数组练习_第14张图片

【JavaSE篇】——数组练习_第15张图片

【JavaSE篇】——数组练习_第16张图片


Arrays.equal

返回类型是boolean类型的,要么true要么false,俩个数组相比较。

【JavaSE篇】——数组练习_第17张图片

【JavaSE篇】——数组练习_第18张图片


sort

【JavaSE篇】——数组练习_第19张图片

【JavaSE篇】——数组练习_第20张图片

我们可以发现,java中从范围的改变都是左闭右开区间,我们给1-4位置排序,实则给1,2,3下标排序了。


❗总结


【JavaSE篇】——数组练习_第21张图片

这是所有这个文章讲的内容。

我只是没读好书,走错一些路,但我并不是坏孩子。 

你可能感兴趣的:(java,java,开发语言,算法,leetcode)