2016-04-23 23 views
-1
public class ArrayCoping { 
public static void main(String[] args) { 
    // Copied from Java Docs 
    char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' }; 
    char[] copyTo = new char[7]; 
    System.arraycopy(copyFrom, 2, copyTo, 0, 7); 
    System.out.println(new String(copyTo)); 
    //Experimenting 
    System.out.println("Printing char: " + new String(copyTo)); 
    System.out.println("Printing char: " + (copyTo)); 
    System.out.println(copyTo); 

    // STRING 
    String[] stringSrc = { "abc", "def", "ghi", "jkl", "mno", "pqr" }; 
    String[] stringDst = new String[4]; 
    System.arraycopy(stringSrc, 1, stringDst, 0, 4); 
//Error  System.out.println(new String(stringDst)); 
    System.out.println("Printing string: " + (stringDst)); 
    System.out.println(stringDst); 

    // INT 
    int[] numSrc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; 
    int[] numDst = new int[4]; 
    System.arraycopy(numSrc, 1, numDst, 0, 4); 
//Error  System.out.println(new int (numDst)); 
    System.out.println("Printing int: " + (numDst)); 
    System.out.println(numDst); 
} 

} 1.同じコードブロックが異なるプリミティブ型(int型と文字列と文字での作業ではない)のために働いていない理由を説明していただけますとのarraycopy。 System.out.println(new String(copyTo));は、の文字で動作しますが、の文字列では動作しません。同様にSystem.out.println(copyTo);チャイルドで動作しますが、ではありません。intです。Javaはメソッド

  1. 同じプリミティブ型が同じコードで異なる動作をするのはなぜですか? System.out.println("Printing char: " + (copyTo));は作品ではなく、System.out.println(copyTo);

私はarraycopy方法が唯一文字データ型で動作すると言う任意の材料を見つけることができませんでした。

+2

。何が問題なのですか? 1つの質問で_最小の例を作成してください。ここに少なくとも3つまたは4つの質問があるようです。 – Tunaki

+0

'//エラーSystem.out.println(新しい文字列(stringDst)); ..' String [] 'ではなく' String'を解析する必要があるため –

+0

_arraycopy_メソッドは** int **で動作しません。 **文字列**。 –

答えて

1

結果を間違って印刷しているだけです。

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

ちょうどStringchar[]を取るコンストラクタを持っているので、動作するように起こります。

アレイを印刷する場合は、Arrays.toString(array)を使用してください。

のように:私はあなたの質問を理解することはできません

System.out.println(Arrays.toString(stringDst)); 
... 
System.out.println(Arrays.toString(numDst));