Lorsque j'exécute le code suivant, rien n'est copié - que fais-je de mal?
Est-ce également le moyen le plus efficace pour copier des données d'une baie vers une autre?
public class A {
public static void main(String args[]) {
int a[] = { 1, 2, 3, 4, 5, 6 };
int b[] = new int[a.length];
for (int i = 0; i < a.length; i++) {
a[i] = b[i];
}
}
}
Je pense que votre mission est à l'envers:
a[i] = b[i];
devrait être:
b[i] = a[i];
Il existe de nombreuses solutions:
b = Arrays.copyOf(a, a.length);
Qui alloue un nouveau tableau, copie les éléments de a
et retourne le nouveau tableau.
Ou
b = new int[a.length];
System.arraycopy(a, 0, b, 0, b.length);
Qui copie le contenu du tableau source dans un tableau de destination que vous vous allouez.
Ou
b = a.clone();
qui fonctionne très bien comme Arrays.copyOf()
. Voir ce fil .
Ou celui que vous avez publié, si vous inversez le sens de l'affectation dans la boucle.
Utilisez Arrays.copyOf mon ami.