AP计算机科学A(APcomputer science A)复习备考攻略视频教程
42729 人在学
当你在java中需要用一个数组来存储另一个数组中的内容的时候,如果你用循环什么的进行转移就会显得很麻烦。所以Java中提供了四种复制数组的方法,而不需要将数组的元素逐一的转移。这四种方法分别是Arrays类中的copyOf(),和copyOfRange()、System类中的arrycopy()方法和Object类中的clone()。下面我们来看看它们怎么使用。
copyOf()
Arrays类的copyOf 方法格式如下:
Arrays.copOf(dataType[] Arrayname,int length);
其中Arrayname 代表的是要进行复制的数组,length代表的是复制后新数组的长度。使用这个方法复制数组,默认的是从数组第一个元素开始复制。而length是目标数组的长度,如果length大于srcArray数组的长度,那么目标数组会采用默认值进行填充。如果length小于srcArray数组的长度,那么复制的时候只复制到length个元素为止。
前面已经说了,copyOf()方法是复制数组到指定的长度,因为在上面的代码中srcarray数组的length为5,但是新数组的length为8.所以我们可以看到的是系统采用了默认值对空了的3个进行填充。因为names数组的数据类型为String ,所以默认填充的是null。
我们可以看到输出的结果是:一 二 三 四 五 null null null
在这里要说一下的是:使用Arrys.copyOf(names,8)复制数组之后返回的类型为Object[]类型。所以要强制转换为String[]类型。
copyOfRange()
copyOfRange的语法形式如下:
Arrays.copOfRange(dataType[] Arrayname,int start,int end);
其中,Arrayname还是表示需要复制的数组,start代表的是从数组的哪一个起始索引开始,end表示的是在哪一个索引结束。要注意的是:start必须在0-srcArray.length之中,而且end必须大于start。并且end可以大于srcArray.length,大于的部分系统会采用默认值进行填充。
下面我们看看怎么运用:
输出的结果:二 三 四 五 null null
在该程序中,原数组中有5个元素,在使用Arrays.copyOfRange()的方法之后将原数组中索引1-6的元素复制到newname数组中。由于end大于原数组的长度,所以后面的部分使用null填充。至于为什么是用null,在上文有提到过。
arraycopy()
System类中arraycopy()的语法格式如下:
System.arraycopy(srcArray,int srcstart,int destarray,int deststart,int length)
其中,srcArray表示的是要复制的数组,srcstart表示的是srcArray中起始的索引,destArray表示的是目标数组,deststart表示的是目标数组的起始索引,length表示的是复制数组的长度。注意,在使用这个方法的时候,length+srcstart必须小于srcArray.length,同时length+deststart必须小于等于destArry.length。
下面我们看看怎么运用:
输出的结果:0 0 2 3 4 5 0 0
注意,这个方法的命名违背了Java命名的规则,因为在Java中,第二个单词的首字母是需要大写的。所以在使用此方法的时候要注意方法名的书写。
clone()
Java中,数组也是一个对象,并且是以Object类的实例,所以可以使用Object类中的clone()方法复制数组,它的语法形式如下:
array_name.clone()
下面看看怎么运用:
因为clone()方法返回的是Object类型的数据,所以要强制转换类型为int。
上面是Java中的四种复制数组的方法,并对每个方法都加入了代码帮助大家理解。这个复制数组的知识是很简单的,希望能对在Java中觉得数组复制很麻烦的朋友有所帮助。