import java.util.Scanner
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in)
System.out.println("请输入一个数组长度:")
int length=input.nextInt()//输入一个正整数就是要定义的数组长度
int a[]=new int[length]
}
}
备注:上面的” int a[]=new int[renshu]“就是定义的新的数组,其中length就是数组的长度。
在Java中,数组对象Array的长度是在实例化时就定死了,不能修改。
像你这种情况,一般是新建一个数组,重新设置长度,可能的话再将老数组里的值拷贝进去:
public class ArrayTest {
public static void main(String[] args) {
int[] arr1 = { 1, 2, 3, 4, 5 }// 初始化一个数组,长度是5(定死了)
int[] arr2 = new int[10]// 重新初始化数组,长度是10
// 将老数组复制到新数组
for (int i = 0i <arr1.lengthi++) {
arr2[i] = arr1[i]
}
// 将老数组对象arr1指向新数组
arr1 = arr2
// 如果不要复制,最简单的就是直接实例化
int[] arr1_1 = new int[5]// 初始化一个数组,长度是5(定死了)
arr1_1 = new int[10]// 再实例化一次,就是一个新数组,以前数组里的东西就不存在类
}
}
一般是这样做的。当访问越界,或者添加数据超过数组当前的length时候。重新申请一个大于等于越界长度的数组。
然后通过Sysmem.arraycopy将原先数组的内容拷贝到新的内存块中。
如果删除了某些元素,使得capacity(容器大小)远大于实际的length时。可以重新构建trim后的数组并copy过去。
这也是ArrayList中的实现方法。System.arraycopy是一个native方法,拷贝效率比较高。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)