Maison >Java >Javacommencer >Comment copier un tableau en Java
1. Les longueurs des tableaux sont égales
Supposons que nums et nums1 sont deux tableaux de longueur égale.
(Tutoriel recommandé : cours Java)
1.1 Utilisez nums = nums1;
avant l'affectation
Après l'affectation
Lorsque nums est créé, une zone mémoire est créée dans le tas pour le stockage, et nums pointe vers cette adresse mémoire A. Une fois nums1 créé, il pointe vers B.
Maintenant, laissez nums = nums1 ; alors l'adresse (ou la référence) de num1 est attribuée à num, donc num pointe également vers B. Les deux tableaux pointent vers la même zone mémoire dans le tas et partagent les données qu’ils contiennent.
1.2, pour la boucle
for (int i = 0; i < nums1.length; i++){ nums[i] = nums1[i]; }
Avant la boucle
Après la boucle
Modification réussie du contenu interne du tableau nums sans changer sa référence.
1.3, Classe Arrays
Méthode 1 : Copiez le tableau spécifié à la longueur spécifiée
nums = Arrays.copyOf(nums1,5);
Méthode 2 : Copiez la longueur spécifiée du tableau spécifié
nums = Arrays.copyOfRange(nums1,0,5);
Deux types Le dernier index de la méthode peut être > la longueur du tableau, puis 0 sera ajouté au reste.
Les deux méthodes peuvent copier avec succès le tableau, et nous avons constaté que les numéros du tableau d'origine sont passés de 524 à 526, indiquant que ces deux méthodes de copie créent un nouveau tableau, puis utilisent le tableau sur le côté gauche du signe égal pour pointer vers ce nouveau tableau.
1.4, méthode System.arraycopy
System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);
On voit que cette méthode est similaire à notre boucle for , c'est-à-dire que le contenu du tableau d'origine est directement modifié sans changer la référence.
2. Les longueurs des tableaux ne sont pas égales
赋值法成功for循环要注意越界问题,会报java.lang.ArrayIndexOutOfBoundsExceptionArrays类法成功注意越界问题,会报java.lang.ArrayIndexOutOfBoundsException
其他:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
//思路:设置一个index,表示非0数的个数,循环遍历数组, // 如果不是0,将非0值移动到第index位置,然后index + 1 //遍历结束之后,index值表示为非0的个数,再次遍历,从index位置后的位置此时都应该为0 public void moveZeroes(int[] nums) { if (nums == null || nums.length <= 1) { return; } int index = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] != 0) { nums[index] = nums[i]; index++; } } for (int i = index; i < nums.length; i++) { nums[i] = 0; } }
相关推荐:java入门
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!