java中数组的扩容(一维数组)

在实际开发中使用的最多的是一维数组,在开发的同时一般要估计好数组的大小,一般不使用扩容!

上代码

package Absttact;
//数组扩容方式
/**System.arraycopy(src, srcPos, dest, destPos, length);
 * 解释 src表示拷贝数组
 * scrPos表示拷贝起始位置
 * dest表示存放数组
 * destPos表示存放起始位置
 * length表示拷贝的长度
     一般是数组的长度 数组名.length
 */
public class Shuzu6 {

	public static void main(String [] agrs ) {
		
		//如何扩容
 		//创建一个小的数组
	   int [ ]a = {1,2,3,4};
	   //拷贝目标数组
		int [] aim =new int [20];
        //全部拷贝
		/*
		 * System.arraycopy(a, 0, aim, 0, a.length);
		
		for(int i=0;i<aim.length;i++) {
			System.out.println(aim[i]);
		}
		 */
	  //拷贝指定数据
		System.arraycopy(a, 1, aim, 2, 3);
		for(int i=0;i<aim.length;i++) {
			System.out.println(aim[i]);
			  /**数组拷贝的介绍
		      * a代表小数组
		      * 1代表小数组拷贝的起始位置
		      * aim代表拷贝小数组的大数组
		      * 2代表大数组拷贝的起始位置
		      * 3表示拷贝的长度
		      */
		}
		//对象拷贝也是一样的
		Object  [] agr= {new Object(),new Object(),};
		
		Object [] newObject= new Object[5];
		
		System.arraycopy(agr, 0, newObject, 0, agr.length);
}
}

上述代码小编由亲自测试过由于没有设计界面就不放运行结果了

在代码中都有相应的解释,友友们可以根据代码来了解练习一下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java一维数组一旦被初始化,其大小通常是固定的,不能直接进行扩容。如果你试图访问或修改超出数组范围的元素,会抛出`ArrayIndexOutOfBoundsException`。然而,如果你需要存储更多的数据,可以使用两种方式: 1. **创建新的更大数组**:你可以创建一个新的数组,将原来数组的元素复制到新数组,然后替换旧数组。这是一种最常见的方法,例如: ```java int[] oldArray = new int[10]; // ...填充数据 if (oldArray.length < requiredCapacity) { int newArraySize = oldArray.length * 2; // 或者根据实际需求调整倍数 int[] newArray = new int[newArraySize]; for (int i = 0; i < oldArray.length; i++) { newArray[i] = oldArray[i]; } // 使用newArray替代oldArray oldArray = newArray; } ``` 2. **动态数据结构**:如果数据量不是预先知道的,或者需要频繁增删元素,可以考虑使用动态数据结构,如ArrayList(基于数组的动态列表)。ArrayList提供了`add()`和`remove()`等方法来添加或删除元素,它会自动管理底层数组的容量: ```java ArrayList<Integer> list = new ArrayList<>(10); // 初始容量为10 list.add(0); // 添加元素 // ...更多操作 // 如果需要,它会在内部扩容,不需要手动管理数组大小 ``` 记得,对于ArrayList这样的动态数组,插入和删除操作的时间复杂度通常为O(n),而静态数组(如数组)的插入和删除操作的时间复杂度为O(n)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值