数组的扩容

数组的扩容我这里给出了三种的扩容方式:

主要运用了两种数组的特性:

(1)址传递

(2)寻址算法:数组名为首地址可得到一个公式

                           下一个数据的地址数:  首地址+数组类型所占字节数*下标


1.基础方式:

1)先创建一个更大的数组

2)将原数组中的数据放置到新数组中

3)原数组赋值给新数组

例子:

package classes;
public class TestArray1{
	public static void main(String[] args){
		int[] arr={1,2,3,4,5};
		//1.先创建一个更大的数组
		int[] arr2 = new int[arr.length*2];
		//2.将原数组的数组赋值给新数组
		for(int i=0;i<arr.length;i++){
			arr2[i] = arr[i];
		}
		//3.新数组赋值给原数组
		arr = arr2;
		arr[5] = 6;
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
	}
}

 2.arraycopy代替了复制元素的操作:

1)先创建一个更大的数组

2)使用System.arraycopy(a,b,c,d,e);

参数列表:

a:原数组名

b:从原数组的第几个元素开始复制

c:新数组

d:从新数组的第几个元素开始复制

e:复制几个元素

例子:
 

package classes;
public class TestArray2{
	public static void main(String[] args){
		int[] arr={1,2,3,4,5};
		//1.先创建一个更大的数组
		int[] arr2 = new int[arr.length*2];
		//2.将原数组的数组赋值给新数组
		System.arraycopy(arr,1,arr2,1,4);
		//3.新数组赋值给原数组
		arr = arr2;
		arr[5] = 6;
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
	}
}

3. copyOf直接代替了上面的三步:

调用java.util.Arrays;包下的copyOf方法,返回值是一个已经扩容数组的首地址,然后将其复制给原数组

例子:

package classes;
import java.util.Arrays;
public class TestArray3{
	public static void main(String[] args){
		int[] arr={1,2,3,4,5};
		//调用copyOf方法,返回值是数组的首地址,然后赋值给原数组
		arr=Arrays.copyOf(arr,arr.length*2);
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值