Maison  >  Article  >  Java  >  Comment copier un tableau en Java

Comment copier un tableau en Java

王林
王林avant
2020-10-19 16:52:372625parcourir

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

Comment copier un tableau en Java

Après l'affectation

Comment copier un tableau en Java

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

Comment copier un tableau en Java

Après la boucle

Comment copier un tableau en Java

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.

Comment copier un tableau en Java

1.4, méthode System.arraycopy

System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);

Comment copier un tableau en Java

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer