2016-04-23 6 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. Können Sie mir bitte erklären, warum der gleiche Code-Block ist nicht für unterschiedliche primitive Typen arbeiten (Arbeit mit char aber nicht mit int und String). System.out.println(new String(copyTo)); arbeitet mit char aber nicht mit String. In ähnlicher Weise arbeitet System.out.println(copyTo); für char aber nicht mit String und int.Java arraycopy Methode

  1. Warum verhält sich derselbe primitive Typ mit demselben Code anders? System.out.println("Printing char: " + (copyTo)); nicht funktioniert, aber System.out.println(copyTo);

ich kein Material gefunden, das sagt arraycopy Methode arbeitet mit char Datentyp nur.

+2

Ich kann Ihre Frage nicht verstehen. Was genau ist das Problem? Bitte machen Sie ein _minimal_ Beispiel mit einer Frage. Es scheint, als gäbe es hier mindestens 3 oder 4 Fragen. – Tunaki

+0

'// Fehler System.out.println (new String (stringDst));' .. weil Sie 'String' und nicht' String [] 'analysieren müssen –

+0

_arraycopy_ Methode funktioniert nicht mit ** int ** und ** Zeichenfolge **. –

Antwort

1

Sie drucken nur die Ergebnisse falsch.

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

passiert einfach zu arbeiten, weil String einen Konstruktor hat, der eine char[] nimmt. Wenn Sie Arrays drucken möchten, verwenden Sie Arrays.toString(array).

Like:

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