oxb*_*kes 14
System.arraycopy
Run Code Online (Sandbox Code Playgroud)
(这使您能够通过offset和length参数复制数组的任意部分).要么
java.util.Arrays.copyOf
Run Code Online (Sandbox Code Playgroud)
这是在JDK 6中添加的,并且是一种通用方法,因此可以使用它:
Integer[] is = new Integer[] { 4, 6 }
Integer[] copy = Arrays.copyOf(is, is.length);
Run Code Online (Sandbox Code Playgroud)
或者它可以缩小类型:
Number[] is = new Number[]{4, 5};
Integer[] copy = Arrays.copyOf(is, is.length, Integer[].class);
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以在数组上使用该clone方法:
Number[] other = is.clone();
Run Code Online (Sandbox Code Playgroud)
旧学校的方式是:
public static void java.lang.System.arraycopy(Object src, int srcPos,
Object dest, int destPos, int length)
Run Code Online (Sandbox Code Playgroud)
这从一个现有阵列复制到另一个阵列.您必须自己分配新数组...假设您正在制作数组的副本.
从JDK 6开始,java.util.Arrays该类有许多copyOf方法来制作具有新大小的数组副本.相关的是:
public static <T> T[] copyOf(T[] original, int newLength)
Run Code Online (Sandbox Code Playgroud)
和
public static <T,U> T[] copyOf(U[] original, int newLength,
Class<? extends T[]> newType)
Run Code Online (Sandbox Code Playgroud)
第一个使用原始数组类型进行复制,第二个使用不同的数组类型进行复制.
请注意,arraycopy和3参数copyOf都必须根据目标数组类型检查原始(源)数组中每个元素的类型.所以两者都可以抛出类型异常.2参数copyOf(理论上至少)不需要进行任何类型检查,因此应该(理论上)更快.在实践中,相对性能将取决于实现.例如,arraycopyJVM经常给予特殊处理.
| 归档时间: |
|
| 查看次数: |
5189 次 |
| 最近记录: |