关于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]???
------解决方案--------------------
static int[] copyOf(int[] original, int newLength)
复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
如上是JDK1.6中的描述,最后一个参数是要copy的长度,而不是下标。
------解决方案--------------------
拜托您再看一下函数名的同时看一下注释。
@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是一个明显的例外)