A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如何把任意数组中的数据复制到另一个数组中。。。求解

14 个回复

倒序浏览
华谦 来自手机 中级黑马 2014-8-17 21:38:09
沙发
直接用“=”貌似可以的
回复 使用道具 举报
定义一个新数组,长度和就数组一样,直接赋值号=就行了
回复 使用道具 举报
  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. }
复制代码

点评

是的,有缺陷,但也可以取到a一样的数据了  发表于 2014-8-18 14:43
你这样是不行的,会让两个指引指向同一个数组。可以用Arrays.copyOf(type[]a,int b)  发表于 2014-8-18 02:43
你这样是不行的,会让两个指引指向同一个数组。可以用Array.copyOf(type[]a,int b)  发表于 2014-8-18 02:36
回复 使用道具 举报
有封装好的方法哦,System.copyArray()
回复 使用道具 举报
数组拷贝
回复 使用道具 举报
本帖最后由 cs8630323 于 2014-8-18 02:43 编辑
姜佳文 发表于 2014-8-17 22:24
定义一个新数组,长度和就数组一样,直接赋值号=就行了

你这样是不行的,会让两个指引指向同一个数组。可以用Arrays.copyOf(type[]a,int b)
回复 使用道具 举报
String类中有方法,直接调用
回复 使用道具 举报
int [] a={5,6,78,32};
int[] b=new int[a.length];
for(int i=0;i<a.length;i++){
        b[i]=a[i];
}
这样应该也行
回复 使用道具 举报
新定义一个数组,长度等于原数组,然后把原数组赋值给新数组
回复 使用道具 举报
新数组=Arrays.copyOf(旧数组,旧数组.length)
回复 使用道具 举报
本帖最后由 怀念黑海岸 于 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
                }
        }
}
这两种方法适用于操作任何数据类型的数组。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马