数组基础:
还有默认初始化
下面这个是比较地址值,不同
二维数组的初始化:
数组拷贝的几种方法
1.直接利用for循环
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) {
int[] array = {1, 2, 4};
int[] tmp = new int[array.length];
for (int i = 0; i <array.length; i++) {
tmp[i] = array[i];
}
System.out.println(Arrays.toString(tmp));
}
}
注意下标
2.写一个方法
import java.util.Arrays;
public class TestDemo {
public static int[] copy(int[]array){
int[] tmp = new int[array.length];
for (int i = 0; i <array.length; i++) {
tmp[i] = array[i];
}
return tmp;
}
public static void main(String[] args) {
int[] array = {1, 2, 4};
System.out.println(Arrays.toString(copy(array)));
}
}
3.利用库函数
Arrays:操作数组的工具类
Arrays.copyOf(int[] original, int newLength)
* original:你要拷贝的数组
* newLength:需要拷贝的长度
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) {
int[] array = {1, 2, 4};
int []tmp=Arrays.copyOf(array,array.length);
System.out.println(Arrays.toString(tmp));
}
}
4.public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
* native:底层是由C/C++代码实现
* src:你要拷贝的数组:源数组
* srcPos:源数组的位置
* dest:目的地数组
* destPos:目的数组的位置
* length:拷贝的长度
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) {
int[] array = {1, 2, 4};
int[]tmp=new int[array.length];
System.arraycopy(array,0,tmp,0,3);
System.out.println(Arrays.toString(tmp));
}
}
5.clone
import java.util.Arrays;
public class TestDemo {
public static void main(String[] args) {
int[] array = {1, 2, 4};
int[] copy = array.clone();
System.out.println(Arrays.toString(copy));
}
}
浅拷贝:针对引用类型,拷贝后的内容改变会影响原来的,后四种方法都是浅拷贝
两个引用同时指向一个对象
深拷贝:针对简单类型,改变拷贝的内容,不影响原来的数组