2017-04-10 36 views
1

爲什麼要複製的範圍不包括最終索引處的數組元素?以Java複製數組

實施例:

class ArrayCopyOfDemo { 
    public static void main(String[] args) { 

     char[] copyFrom = {'d', 'e', 'c', 'a', 'f', 'f', 'e', 
      'i', 'n', 'a', 't', 'e', 'd'}; 

     char[] copyTo = java.util.Arrays.copyOfRange(copyFrom, 2, 9); 

     System.out.println(new String(copyTo)); 
    } 
} 

結果: 「咖啡因」

(要複製的不包括在索引9(陣列元件,其包含的字符的範圍內的)

源:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

非常感謝您的回答!

+0

這與所有Java範圍非常一致,起始索引包含在結尾中。參見例如'String.substring'等。 – Mena

+0

因爲這就是該方法的工作原理... https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html# copyOfRange(char [],%20int,%20int) – Flikk

+5

它已經告訴你爲什麼在你發佈的鏈接中:「請注意copyOfRange方法的**第二個參數**是要複製的範圍的初始索引* *包含**,而**第三個參數**是要複製範圍的最終索引,**僅限**。「 –

回答

4

從Arrays.copyOfRange的Javadoc:

* @param from the initial index of the range to be copied, inclusive 
* @param to the final index of the range to be copied, exclusive. 
0

的Arrays.copyOfRange方法將從複製(I,J-1)。你的線路應該是

char[] copyTo = java.util.Arrays.copyOfRange(copyFrom, 2, 10); 

包括最後一個字符。