1. String
tableau
Je voudrais vous donner un bref aperçu des String
tableaux.
Comme nous l'avons dit précédemment, un tableau peut être de n'importe quel type. Cela signifie que vous pouvez créer un tableau de String
s. Si nous voulions écrire un programme qui "lit 10 lignes à partir du clavier et les affiche dans l'ordre inverse", voici à quoi ressemblerait le code :
|
Créer un Scanner objet Créer un objet tableau à 10 éléments Boucler de 0 à 9 Lire une chaîne au clavier et l'enregistrer dans la cellule suivante du tableau Boucler de 9 à 0 Afficher la cellule suivante du tableau |
Le code a à peine changé ! Nous n'avons eu qu'à remplacer int
par String
lors de la création du tableau. Eh bien, et lors de la lecture de la chaîne à partir du clavier, nous avons également remplacé la nextInt()
méthode par nextLine()
.
2. String
tableau en mémoire
Et un autre fait utile. Considérons 3 images :
Image 1. Comment un String
objet est organisé en mémoire :
Cette photo a été prise lors des cours précédents.
Veuillez noter que le texte de la chaîne n'est pas stocké directement dans la variable : un bloc de mémoire séparé lui est alloué. Une String
variable stocke l'adresse (référence) d'un objet qui stocke le texte.
Image 2. Comment un tableau d'entiers est organisé en mémoire :
Cette image est également familière.
Image 3. Comment un tableau de chaînes est organisé en mémoire :
Sur la gauche, nous voyons une variable tableau dont le type est String[]
(elle stocke l'adresse d'un objet tableau).
Au milieu, nous avons String
l'objet tableau lui-même.
Et à droite se trouvent des objets de chaîne qui stockent du texte.
Les cellules du String
tableau ne stockent pas les chaînes elles-mêmes (le texte des objets String). Au lieu de cela, ils stockent leurs adresses (références à celles-ci). De la même manière que String
les variables stockent les adresses des objets de chaîne (où le texte est stocké).
Tenez-en compte lorsque vous comparez des cellules de tableau :
|
Créer un tableau de 10 chaînes Mettre des valeurs dans le tableau true (les références sont égales) false (les références ne sont pas égales)true (les chaînes sont égales) true (les chaînes sont toujours égales) |
3. Initialisation rapide du tableau en Java
Les tableaux sont super utiles, donc les créateurs de Java ont essayé de rendre leur travail aussi pratique que possible.
La première chose qu'ils ont faite a été de simplifier l'initialisation du tableau, le processus par lequel vous fournissez les valeurs initiales d'un tableau.
Après tout, en plus des données lues quelque part, un programme a aussi très souvent besoin de ses propres données internes pour fonctionner. Par exemple, supposons que nous ayons besoin de stocker les longueurs de chaque mois dans un tableau. Voici à quoi pourrait ressembler le code :
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
Mais grâce aux créateurs de Java, il existe un moyen d'écrire ceci de manière plus concise :
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Vous pouvez simplement lister toutes les valeurs du tableau, séparées par des virgules !
Pratique, non ? Mais ce n'est pas tout.
En l'occurrence, le compilateur peut déterminer le type du conteneur (objet tableau) en fonction du type des valeurs du tableau. Et pour déterminer la longueur du tableau, il est trivial de compter le nombre d'éléments écrits entre les accolades.
Cela signifie que ce code peut être écrit encore plus court :
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Une chose de beauté, n'est-ce pas? 🙂
C'est ce qu'on appelle "l'initialisation rapide du tableau". Au fait, cela fonctionne pour les types autres que int
...
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};