Le nom du tableau est l'adresse de l'élément *** pointé par le pointeur de tête du tableau. Si vous pouvez le comprendre de cette façon, alors réfléchissez-y avec vos cuisses et vous saurez que a=b ne peut pas. implémente l'affectation de tableau. Généralement en C et C++, nous utilisons une boucle pour attribuer une valeur unique, similaire à celle-ci : 🎜🎜#int
i= 0;i<10;i++)
-
a[i]=b[i] #🎜 🎜# Pour y parvenir, après avoir appris le C et le C++ pendant si longtemps, je ne trouve pas cela gênant après l'avoir beaucoup utilisé. Mais en JAVA, ce n'est pas la même chose que C et C++. JAVA est très intelligent. Il peut utiliser a=b pour attribuer b à a. Lorsque vous utilisez a=b en JAVA, dans a. le contenu est affiché sous la forme d'un tableau, il est exactement le même que le contenu de b, ce qui montre que cette méthode est réalisable. C'est ainsi qu'elle est utilisée dans mon programme, mais un bug en résulte. Au début, j'ai trouvé que peu importe si j'utilisais a=b ou a=a.clone(); le résultat était le même, ce qui était un peu déroutant, mais maintenant je le comprends parfaitement. Afin d'illustrer ce problème, démontrons avec un programme :
private int[] subResources(int[] aa, int[] bb) { // 做减法 int []a=aa; int []b=bb; for (int i = 0; i < a.length; i++) a[i] = a[i] - b[i]; return a; }
Copier après la connexion
Ceci est utilisé pour implémenter une fonction qui veut soustraire deux tableaux. Utilisez-le comme ceci dans le programme appelant -
int []allo=pcb0.getAllocation().clone(); //方式1 //int []allo=pcb0.getAllocation()//方式2 int[] allocation = this.addResources(allo, request);
Copier après la connexion
#. 🎜🎜# ci-dessus Les différents résultats du passage des paramètres dans les deux méthodes sont que lorsque vous modifiez la valeur des paramètres passés dans la fonction addResources, la méthode 1 ne peut pas modifier les données d'origine, mais la méthode 2 peut modifier les données d'origine. Lors de l'attribution d'une valeur dans la méthode 1, elle crée d'abord une copie du tableau, puis attribue la copie au tableau cible de cette manière, l'adresse du tableau de copie n'est certainement pas la même que l'adresse du tableau d'origine. de cette façon, quelle que soit la façon dont vous la modifiez, la méthode 1 ne modifiera pas les données d'origine, mais la méthode 2 est différente. La méthode 2 attribue directement l'adresse des données aux données cibles, de sorte que les noms de tableau différents des deux tableaux. font en fait référence à la même adresse, donc bien sûr, la valeur d'origine peut être modifiée. Analysé de cette manière, c'est un peu comme le pointeur et la valeur de référence dans le paramètre de fonction passant en C++ Puisque les pointeurs sont abandonnés en Java, toutes les relations de pointage utilisent des types référence en C++. des erreurs comme celle-ci après l’avoir utilisé pendant une longue période. Ce n'est pas comme passer la valeur addResources (int *a,int *b) ou addResources (int a[],int b[]) comme en C++. Ce sera un inconvénient. Il semble que ce soit le seul moment de ma vie à cet endroit où je dois me concentrer davantage sur l'apprentissage. Maintenant, je comprends pourquoi les questions de base du salon de l'emploi semblent simples, mais tout le monde ne peut pas bien y répondre. .
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!