黑马程序员技术交流社区

标题: 如何把任意数组中的数据复制到另一个数组中 [打印本页]

作者: 周靖轩    时间: 2014-8-17 21:21
标题: 如何把任意数组中的数据复制到另一个数组中
如何把任意数组中的数据复制到另一个数组中。。。求解
作者: 华谦    时间: 2014-8-17 21:38
直接用“=”貌似可以的
作者: 姜佳文    时间: 2014-8-17 22:24
定义一个新数组,长度和就数组一样,直接赋值号=就行了
作者: huangxuanheng    时间: 2014-8-17 23:33
  1. public class ArrayDemo{
  2.    public static void main(String args[]){
  3. int[]a={5,6,78,32};//定义数组
  4. int[]b=a;   //把数组a的值赋给数组b,即复制
  5. }

  6. }
复制代码

作者: 裤裆里的温柔、    时间: 2014-8-18 01:19
有封装好的方法哦,System.copyArray()
作者: 范靖明    时间: 2014-8-18 01:29
数组拷贝
作者: cs8630323    时间: 2014-8-18 02:31
本帖最后由 cs8630323 于 2014-8-18 02:43 编辑
姜佳文 发表于 2014-8-17 22:24
定义一个新数组,长度和就数组一样,直接赋值号=就行了

你这样是不行的,会让两个指引指向同一个数组。可以用Arrays.copyOf(type[]a,int b)
作者: Huberry    时间: 2014-8-18 02:48
String类中有方法,直接调用
作者: 谢建平    时间: 2014-8-18 05:21
int [] a={5,6,78,32};
int[] b=new int[a.length];
for(int i=0;i<a.length;i++){
        b[i]=a[i];
}
这样应该也行
作者: 酋长第一    时间: 2014-8-18 12:38
新定义一个数组,长度等于原数组,然后把原数组赋值给新数组
作者: kakasa    时间: 2014-8-18 14:47
新数组=Arrays.copyOf(旧数组,旧数组.length)

作者: 怀念黑海岸    时间: 2014-8-18 19:13
本帖最后由 怀念黑海岸 于 2014-8-18 19:18 编辑

四楼说的不错,可以直接使用System中的arrayCopy方法,这个方法能操作一切类型的数组。而且对于楼主所提出的问题看来比较有歧义,不知道你是通过复制后就是否需要保持原有数组本身中的元素。 如果不需要的话那么就可以直接用2楼的办法了,如果你需要保持原有数组中的元素的话那么建议使用四楼的方法,也可以直接使用Object类中的clone方法,但是你必须将使用这个方法的类实现Cloneable接口(这是一个标记接口,和Serializable接口一样),
然后获取这个数组的一个范本就行了,你操作这个范本时是不会改变原有数组的元素内容的:如下面的代码:
public class ShallowClone implements Cloneable{
        public static String [] cloneString(String []str){
                String []strClone =null;
                strClone=str.clone();
                return strClone;
        }
        public static void main(String[] args) {
                String []str =new String[]{"avx","sad","dsf","sad","dfg",};
                String []strNew =cloneString(str);
                /*String []strNew =new String[str.length];  //这是四楼说的用arrayCopy方法复制也能达到目的
                System.arraycopy(str, 0, strNew, 0, str.length);*/
                strNew[4]="AAAA";   //操作范本中的元素是不会改变原有数组中的内容的。
                for(String each:str){
                        System.out.print(each+" ");//结果 avx sad dsf sad dfg
                }
                System.out.println();
                for(String each:strNew){
                        System.out.print(each+" ");  //结果 avx sad dsf sad AAA
                }
        }
}
这两种方法适用于操作任何数据类型的数组。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2