读书人

关于Arrays.copyOfRange(md,from,to)小

发布时间: 2013-06-19 10:26:41 作者: rapoo

关于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是一个明显的例外)

读书人网 >Java相关

热点推荐