null
| # 🎜🎜#4. Résumé
Les tableaux conviennent à de grandes quantités de données du même type
L'initialisation statique convient pour connaître la valeur de l'élément
L'initialisation dynamique convient pour ne pas savoir quelles données stocker
3. Propriétés des tableaux
1. Accès
La manière générale d'accéder à un tableau est :
Nom du tableau [index]
Exemple de question :
//静态初始化数组
int [] array= {1,2,3,4,5};
System.out.println(array[0]);//输出 1
System.out.println(array[1]);//输出 2
System.out.println(array[3]);//输出 4
2. length pour obtenir la longueur du tableau.
Exemple de question :
//静态初始化数组
int [] array= {1,2,3,4,5};
System.out.println(array.length);//调用方法,输出长度 5
//最大索引array.length-1
3. Traversal
Traversal accède aux éléments d'un tableau un par un. Il est principalement utilisé dans les statistiques de recherche et de données...
Nous avons déjà appris les structures de boucles et les structures de branches. utiliser la boucle For Traverser un tableau
Exemple de question :
Étant donné les éléments {10,8,9,4,5,6,8,71,2,3,9,99}, utilisez un tableau statique pour stocker et afficher les éléments supérieur à 5 dans le tableau ?
Implémentation du codage :
//静态初始化数组
int [] array= {10,8,9,4,5,6,8,71,2,3,9,99};
for(int i=0;i<array.length;i++)
{
if(array[i]>5)
System.out.println(array[i]);
}
Résultat de sortie :
10 8 9 6 8 71 9 99
4. Carte mémoire
Java doit allouer de l'espace dans la mémoire lorsque le programme est courir. L'espace est divisé en différentes zones. Mémoire de pile : stocke les variables locales et disparaît immédiatement après utilisation Mémoire tas : stocke le nouveau contenu (objets, entités), l'adresse est recyclée lorsque le ramasse-miettes est inactif 1. graph
Ce qui suit crée le code du tableau pour implémenter son graphe de relation mémoire
Implémentation du codage :
//动态初始化数组
int [] arr=new int[3];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
//修改值
arr[0]=100;
arr[2]=200;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
Résultat de sortie :
[I@15db974200
0
[I@15db9742
100
0 200
Explication du principe :
L'initialisation dynamique génère d'abord une nouvelle et une valeur d'adresse arr dans la mémoire du tas, en fonction des résultats du compilateur, supposons 001 ici. En raison de l'initialisation dynamique, chaque élément a une valeur initiale. Pour plus de détails, voir le tableau ci-dessus. Lorsque nous produisons des éléments, nous accédons d'abord à l'adresse du nom du tableau, accédons à l'indice de mémoire du tas, puis générons la valeur de l'élément.
-
Modifier la valeur du tableau. Le processus est le même que pour la visualiser, sauf qu'il y a une étape supplémentaire dans le processus de modification, comme indiqué ci-dessous :
2.
Matrices multiples et mémoire à matrice unique Les principes d'utilisation sont les mêmes, je n'entrerai donc pas dans les détails ici. 3. Les tableaux pointent vers la même mémoireSi nous modifions les valeurs d'adresse des deux tableaux pour qu'elles soient identiques, à quoi ressemblera le résultat modifié, comme indiqué dans le code ci-dessous.
Implémentation de l'encodage :
//动态初始化数组
int [] arr=new int[3];
arr[0]=100;
arr[1]=200;
arr[2]=300;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
int [] arr2=arr;
arr2[0]=111;
arr2[1]=222;
arr2[2]=333;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr2);
System.out.println(arr2[0]);
Résultat de sortie :
[I@15db9742100
200300
[I@15db9742111[I@15db9742
111
Explication du principe :
Le L'adresse d'un tableau dans la mémoire tas est 001, et l'adresse du deuxième tableau est également 001, donc modifier la valeur du deuxième tableau est en fait la même mémoire de tableau. La valeur du premier tableau changera également en conséquence, et les résultats sont les suivants :
5. Foire aux questions 1. Index hors limites //静态初始化数组
int [] array= {1,2,3};
System.out.println(array[3]);
Une fois le code ci-dessus exécuté, ce qui suit. une exception d'erreur apparaîtra :
Exception dans le fil "main" java.lang.NullPointerException-
Explication : Nous définissons le tableau sur null , ce qui fait que le tableau consulté ne pointe pas vers les données dans la mémoire tas