日期:2014-05-20  浏览次数:20623 次

关于Arrays.copyOfRange(md,from,to)小问题
 int mn[]=new int[64];
   for(int m=0;m<64;m++)
       mn[m]=10+m;
   int abc[]=Arrays.copyOfRange(mn, 0, 5);
   for(int i=0;i<abc.length;i++)
       System.out.println(abc[i]);

为什么上述copy函数最后只是输出abc[0],abc[1],abc[2],abc[3],abc[4]的值,却没有abc[5]???
java Arrays.copyOfRange

------解决方案--------------------

static int[] copyOf(int[] original, int newLength) 
复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。 

如上是JDK1.6中的描述,最后一个参数是要copy的长度,而不是下标。
------解决方案--------------------
引用:
朋友请看清楚,copy函数是copyOfRange(type[],from,to)
这是一个指定从from到to的一个copy。。。只是不知道为什么它只是复制到to-1。。

拜托您再看一下函数名的同时看一下注释。
@param to the final index of the range to be copied, exclusive.
     *     (This index may lie outside the array.)

exclusive的含义是“不包括”
区别于from注释的inclusive“包括”
------解决方案--------------------
另外,大体上JDK的下标习惯都是这样
1 如果两个都是下标,前一个下标inclusive,后一个exclusive
2 下标一般都是0开始(JDBC的PreparedStatment/ResultSet是一个明显的例外)