1. Préface
Aperçu de l'apprentissage : Au cours des huit premiers jours, nous avons appris les bases de la grammaire, des opérateurs et des expressions, des structures de boucles et des structures de branches. et méthodes d'attributs associées., Carte mémoire du stockage de tableau, erreurs courantes
Objectifs d'apprentissage : Maîtriser les deux méthodes de définition des tableaux, les propriétés associées, comprendre les principes de la mémoire, la résolution des erreurs
2. Définition des tableaux
1. Présentation
Si les notes d'un camarade de classe doivent être stockées, quelle méthode faut-il utiliser ?
Comme nous l'avons appris précédemment, plusieurs variables peuvent être définies pour stocker différents scores. Mais s’il y a plus de 1 000 étudiants, pourquoi ne pas définir plus de 1 000 variables ? Bien sûr que non, cela nécessite l'utilisation de notre tableau.
2. Initialisation statique du tableau
Caractéristiques : attribuez directement des valeurs au tableau lors de la définition du tableau, et le système détermine la longueur du tableau
#🎜 🎜#Format général : #🎜 🎜#
Type de données [] nom du tableau = { élément 1, élément 2, élément 3, … [] array= {1,2,3,4,5};
double[] scores = {88.5, 99.5, 59.5};
3. tableau
Fonctionnalités : Lors de la définition d'un tableau, déterminez le type d'éléments et la longueur du tableau, puis stockez les données
Format général :
#🎜 🎜#
Data type [] array name = nouveau type de données [length];
Par exemple :
int [] array= new int[5];
double[] scores = nouveau double[3];
#🎜🎜 #Valeur par défaut :
Type de données
#🎜 🎜#Type de définition spécifique
Valeur par défaut
| Type de base |
byte, short, char , entier, long 🎜#0.0 |
#🎜 🎜 #
boolean |
false | #🎜 🎜## 🎜🎜#Type de citation | # 🎜🎜#Classe, Interface, Tableau, Chaîne
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
Copier après la connexion
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
Copier après la connexion
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]);
}
Copier après la connexion
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]);
Copier après la connexion
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]);
Copier après la connexion
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]);
Copier après la connexion
Une fois le code ci-dessus exécuté, ce qui suit. une exception d'erreur apparaîtra :
Exception dans le fil "main" java.lang.ArrayIndexOutOfBoundsException : 3 Explication : Nous avons donné statiquement 3 nombres au tableau initial et l'index maximum est 2. Lorsque nous accédons à 3, un l'erreur sera signalée 2. Exception de pointeur nul//动态初始化数组
int [] array= new int[3];
array=null;
System.out.println(array[0]);
Copier après la connexion
Après l'exécution du code ci-dessus, l'exception d'erreur suivante 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
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!