2017-04-10 7 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で配列要素を(含まれていないコピーする範囲A)

ソース: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# – Flikk

+5

あなたが投稿したリンクの中で、なぜ "copyOfRange"メソッドの**第2パラメータ**がコピーされる範囲の最初のインデックスであることに注意してください* *包括的**、**第3パラメータ**はコピーされる範囲の最終的なインデックスです** **排他的に**。 –

答えて

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)のからコピーされます。あなたの行は、最後の文字を含めるには、

である必要があります。