目录
🚩数组转字符串
🚩数组拷贝
🎈拷贝的实质
🎈copyOf方法(new)
🍭copyOf扩容
🎈arraycopy方法(局部的拷贝)(系统类)
🎈copyOfRange方法(局部拷贝)
🎈原数组.clone()
🚩Arrays.fill
🚩Arrays.equal
🚩sort
❗总结
Java 中提供了 java.util.Arrays 包, 其中包含了一些操作数组的常用方法.
.Array; 操作数组相关的工具类.
🚩数组转字符串
数组——>字符串 {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);}
🚩数组拷贝
🎈拷贝的实质
首先我们谈一谈什么是拷贝?——拷贝的前提是要有原内容产生一个一模一样的内容,叫做拷贝。
这算拷贝嘛?——不是,因为没有产生新的内存空间。
真正的拷贝是自己开辟一个和原数组一模一样的空间大小,然后将每个值依次拷贝进去,而不是没有开辟的新空间。
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 <array.length ; i++) {array2[i]=array[i];}System.out.println(Arrays.toString(array2));}
🎈copyOf方法(new)
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扩容
🎈arraycopy方法(局部的拷贝)(系统类)
这个方法的底层是无法看到的,由native修饰的方法底层是c/c++语言写的。(速度快)
前面从第几个位置开始拷贝,那么后面的拷贝长度就相应的减几。(从原数组的第二个位置拷贝到新数组的开始位置)——前2个拷贝不到。
(从原数组的开始位置拷贝到新数组的第二个位置)长度也得减2——只不过后俩个拷贝不到。
🎈copyOfRange方法(局部拷贝)
🎈原数组.clone()
🚩Arrays.fill
fill方法重载了很多类型,不止是int类型,可以让整个数组的值都改成一个值,也可以让数组中的一个区间改成某个值。
🚩Arrays.equal
返回类型是boolean类型的,要么true要么false,俩个数组相比较。
🚩sort
我们可以发现,java中从范围的改变都是左闭右开区间,我们给1-4位置排序,实则给1,2,3下标排序了。
❗总结
这是所有这个文章讲的内容。
我只是没读好书,走错一些路,但我并不是坏孩子。