Java基础之一维数组声明与底层的拷贝方法
程序员文章站
2022-07-15 22:42:06
...
1. 数组是相同数据的集合
1.0 首先数组是在堆上申请的一段连续的空间
int [] arr = new int[10];
arr 保存在堆上开辟的内存的首地址
1.1数组的三种定义方式
数组的通用声明方式 类型名 [] 数组名
(1) 先声明后初始化
int [] arr ;
arr = new int [5]; //这种声明方式直接给定了数组的大小,
//且数组各个元素默认值为0
(2)声明的同时进行初始化
int []arr = {1,2,3,4};
int []arr = new int[]{1,2,3,4}; //系统可以直接计算出来元素的个数
(3)先声明后初始化使用系统分配的默认值
int [] arr = new int [5]; //包含5个元素,且各个元素默认初始化为0
不能同时定义数组的各个元素和大小
1.2 数组的遍历
1.下标遍历
int []arr =new int [5];
for(int i = 0 ;i<arr.length ;i++ ){
System.out.println(arr[i]);
}
2.for each遍历
for(int value : brr){ // 将每个数据赋值给value 迭代器自定义
System.out.println(value);
}
3.Arrays类中的方法: to String()方法
System.out.println(Arrays.toString(arr)); //调用了TO String方法
1.3 一维数组的拷贝
1.调用 数组名.clone()方法
int []arr ={1,2,3};
int []brr;
brr =arr.clone();
System.out.println("arr:"+ Arrays.toString(arr));
System.out.println("brr:"+ Arrays.toString(brr));
2. Arrays.copyof(原数组,拷贝数组长度) ;
int []arr ={1,2,3};
int [] brr = Arrays.copyOf(arr,arr.length);
System.out.println("arr:"+ Arrays.toString(arr));
System.out.println("brr:"+ Arrays.toString(brr)); //拷贝结果同上
这种拷贝方式可以通过给原数组进行间接增长
arr = Arrays.copyOf(arr,arr.length);
Arrays.copyOf();
底层实现原理
Arrays.copyOf();实现的原型是
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
src 为原数组
srcPos为原数组的要复制的起始位置 在Arrays.copyOf();中默认为0
dest 为目的数组
destPos 为目的数组放置的起始位置 在Arrays.copyOf();中默认为0
在一维数组中所有的拷贝均为深拷贝,不存在浅拷贝
在此处 src 与dest 必须是相同的类型或者是可进行转换的数据类型
上一篇: 战疫情-用地图揭秘“逆行者”