Java数组的扩容四种实现方式

在Java中由于数组的长度是固定了的,所以只能重新新建一个数组来实现这种扩容(这种扩容不是基于本身的数组扩容,算是一种移花接木吧!),直接上代码,其中有注释可以帮助理解。

import java.util.Arrays;
//数组的扩容示例
public class Test {
	public static void main(String [] args){
		//创建一个原始数组,并做好初始化。
		// int [] arry = {1,3,5,7,9};
		int arry[] =new int[]{1,3,5,7,9};
		int arry1[]=new int[7];//新建一个新数组这里的7=arry.length+需要扩容的长度
		System.out.println("打印原始数组的长度为:"+arry.length);
		System.out.println("打印新数组的长度为:"+arry1.length);
		//验证该数组有没有创建完成,可以获取一下数组元素看看能不能成功。
		// System.out.println(arry[1]);
		//把从旧数组中获取的数据一个一个的存到新的数组里面去,并新增两个数:11,13。
		//如何把数据存到数组里面去,使用arry1[0]=1;
		/*
		//方法一:理清思路,数组的存取方法。
		arry1[0]=arry[0];
		arry1[1]=arry[1];
		arry1[2]=arry[2];
		arry1[3]=arry[3];
		arry1[4]=arry[4];
		arry1[5]=11;
		arry1[6]=13;
		System.out.println("新数组为:"+arry1[5]);
		System.out.println("新数组为:"+arry1[6]);
		*/
	
		/*
		//方法二:循环遍历原始数组arry,长度是固定的,所以用for循环。
		//1、先完成复制数组
		for(int i=0;i<arry.length;i++){
			arry1[i] = arry[i];
		}
		//2、再完成赋值插入操作,即已完成数组的扩容操作。
		arry1[5]=11;
		arry1[6]=13;
		System.out.println("新数组为:"+arry1[5]);
		System.out.println("新数组为:"+arry1[6]);
		*/
	
		/*
		//方法三:使用java的util包的Arrays类的copyOf(原数组名,新数组长度)方法来进行复制。
		arry1 = Arrays.copyOf(arry,arry.length+2);
		arry1[5] = 11;
		arry1[6] = 13;
		System.out.println("新数组为:"+arry1[5]);
		System.out.println("新数组为:"+arry1[6]);
		*/
	
		//方法四:使用System.arrycopy(原数组名,起始下标,新数组名,起始下标,复制长度)方法来进行复制。
		System.arraycopy(arry,0,arry1,0,arry.length);
		arry1[5] = 11;
		arry1[6] = 13;
		System.out.println("新数组为:"+arry1[5]);
		System.out.println("新数组为:"+arry1[6]);
		/*其他介绍一下Arrays.copyOf()和System.arrayCopy()方法的区别:
		System.arraycopy();
		1、功能强大,使用灵活。
		2、参数多,容易发生异常。
		3、需要较复杂的数组复制时使用。
		Arrays.copyOf()
		1、参数少,没有异常。
		2、功能有限,需要import。
		3、需要普通的数组扩容,缩容时使用。
		*/
		//最后打印一下新数组
		System.out.println("新数组为:"+Arrays.toString(arry1));
	}
}
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值