java中的数组一旦被定义长度是不允许修改长度的,如果题主希望实现类似的功能可以采用ArrayList。ArrayList的底层结构就是数组。当ArrayList实例化时会默认设置一个长度,当长度不够用时会自动扩展现有长度的1/2.(假设初始数组长度为10,现在变成了15)
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、和林格尔网站维护、网站推广。
System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length )能够实现数组复制的功能。
假设有数组a(src),数组b(dest),我们希望把a数组中从下标为2(srcPos)长度为3(length)的元素复制到b的下标为4(destPos)开始的元素中。java代码示例如下:
int a = [1,3,5,7,9];
int b = [2,4,6,8,0,2,4];
System.arraycopy(a,2,b,4,3);
//最终b的内容为[2,4,6,8,5,7,9];
但是如果注意API的话会发现arraycopy有几个限制
1、a,b的元素类型必须相同(int和Integer这里也是需要区分的)
2、数组不能越界,也就是srcPos+length不能超过a的长度;desPos+length也不能超过b的长度,否则就会报数组越界的一场。这也说明了无法实现数组长度的动态扩展。
ArrayList就是一个可以变成的数组(你可以这样理解)
ArrayListE 其中E是一个泛型,例如,ArrayListString array=new ArrayListString();则表示新建一个存放String的可变长数组。
ArrayListObject array1=new ArrayListObject()则为一个存放Object的可变长数组。
记住,这种样式的E,有的用T表示,它的意思为泛型。泛型是什么就不介绍了。
而且,E只能是一个类的类名,如果你是变为ArrayListint则是错误的,要用ArrayListInteger才可以
一般来说,Java中定义一个数组,这个数组的长度是固定的,如果改变数组的长度,实际上是就是要重新new一个数组,然后把原来数组里的值放进新的数组中并把新数组返回。
public
static
char[]
changSize(char[]
c,int
s){
char[]
s
=
new
char[s];
for(int
i
=
0;ic.size;i++){
s[i]=c[i];
}
return
s;
}
应该是你太想当然了。前后交换是没错,但是你循环次数有误。应该是循环 (arr.length+1)/2 ,当然后面的交换赋值也要改