目录
数组转字符串
数组拷贝
拷贝的实质
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
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));
}
这个方法的底层是无法看到的,由native修饰的方法底层是c/c++语言写的。(速度快)
前面从第几个位置开始拷贝,那么后面的拷贝长度就相应的减几。(从原数组的第二个位置拷贝到新数组的开始位置)——前2个拷贝不到。
(从原数组的开始位置拷贝到新数组的第二个位置)长度也得减2——只不过后俩个拷贝不到。
fill方法重载了很多类型,不止是int类型,可以让整个数组的值都改成一个值,也可以让数组中的一个区间改成某个值。
返回类型是boolean类型的,要么true要么false,俩个数组相比较。
这是所有这个文章讲的内容。
我只是没读好书,走错一些路,但我并不是坏孩子。