如何从Java中的另一个数组创build一个子数组?

如何从另一个数组创build一个子数组? 有没有一种方法,从第一个数组的索引,如:

methodName(object array, int start, int end) 

我不想让循环让我的程序受到影响。

我不断收到错误:

找不到符号方法copyOfRange(int [],int,int)

这是我的代码:

 import java.util.*; public class testing { public static void main(String [] arg) { int[] src = new int[] {1, 2, 3, 4, 5}; int b1[] = Arrays.copyOfRange(src, 0, 2); } } 

您可以使用

JDK> 1.5

 Arrays.copyOfRange(Object[] src, int from, int to) 

的Javadoc

JDK <= 1.5

 System.arraycopy(Object[] src, int srcStartIndex, Object[] dest, int dstStartIndex, int lengthOfCopiedIndices); 

的Javadoc

Arrays.copyOfRange(..)是在Java 1.6中添加的。 所以也许你没有最新版本。 如果无法升级,请查看System.arraycopy(..)

是的,它叫做System.arraycopy(Object,int,Object,int,int) 。

尽pipe如此,它仍然会在某个地方执行一个循环,除非这个可以通过JIT(在这种情况下,循环在CPU内部)优化成像REP STOSW这样的东西。

 int[] src = new int[] {1, 2, 3, 4, 5}; int[] dst = new int[3]; System.arraycopy(src, 1, dst, 0, 3); // Copies 2, 3, 4 into dst 

使用java.util.Arrays类的copyOfRange方法:

int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);

更多细节:

链接到类似的问题

使用可在此链接下载的Apache ArrayUtils ,您可以轻松使用该方法

 subarray(boolean[] array, int startIndexInclusive, int endIndexExclusive) 

“布尔”只是一个例子,所有原始types的java都有方法

代码是正确的,所以我猜你正在使用一个较旧的JDK。 该方法的javadoc说,自1.6以来一直在那里。 在命令行中input:

 java -version 

我猜你没有运行1.6

 int newArrayLength = 30; int[] newArray = new int[newArrayLength]; System.arrayCopy(oldArray, 0, newArray, 0, newArray.length); 

我在使用java之前版本1.6使用System.arraycopy()来代替。 或者升级你的环境。