首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

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

2013-06-19 
关于Arrays.copyOfRange(md,from,to)小问题 int mn[]new int[64]for(int m0m64m++)mn[m]10+mint a

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

热点排行