A voir également:
- Public int[] index = new int[20];
- Index téléphonique - Guide
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Ip public - Guide
- Telecharger index - Télécharger - Gestion de fichiers
- Réseau public ou privé - Forum Réseau
2 réponses
Les tableaux sont des objets issus de classes construites automatiquement par Java.
Si tu fait int[], Java construit automatiquement une classe tableau pour les int
Si tu fais String[], Java construit automatiquement une autre classe tableau pour les String
Plus compliqué, si tu fais double[][], Java construit automatiquement une classe tableau pour les double et une deuxième classe tableau pour les double[]
Voici un petit code de test pour voir le nom de ces classes automatiques :
Le résultat est le suivant :
Explications :
Quand on fait int[] on créé la classe [I (le I indique que c'est un int, et le [ indique que c'est un tableau)
De même pour String[], le vrai nom de String est java.lang.String, ce qui explique pourquoi on a un L (pour les objets) suivi du nom complet de String. Avec bien sûr le [ pour indiquer que c'est un tableau.
Enfin, pour double[][], on a D pour dire que c'est un double, puis on a [D qui correspond à double[] et [[D qui correspond à double[][]
Ne sois donc pas surpris si tu affiches un tableau d'avoir ce genre de résultat :
Pour afficher correctement un tableau, il faut utiliser des méthodes qui lisent un à un tous les éléments du tableau pour les afficher. Par exemple la méthode java.util.Arrays.toString permet de faire ce genre de manipulation.
Si tu fait int[], Java construit automatiquement une classe tableau pour les int
Si tu fais String[], Java construit automatiquement une autre classe tableau pour les String
Plus compliqué, si tu fais double[][], Java construit automatiquement une classe tableau pour les double et une deuxième classe tableau pour les double[]
Voici un petit code de test pour voir le nom de ces classes automatiques :
public static void main(String[] args) { System.out.println(new int[] {}.getClass().getName()); System.out.println(new String[] {}.getClass().getName()); System.out.println(new double[][] {}.getClass().getName()); }
Le résultat est le suivant :
[I [Ljava.lang.String; [[D
Explications :
Quand on fait int[] on créé la classe [I (le I indique que c'est un int, et le [ indique que c'est un tableau)
De même pour String[], le vrai nom de String est java.lang.String, ce qui explique pourquoi on a un L (pour les objets) suivi du nom complet de String. Avec bien sûr le [ pour indiquer que c'est un tableau.
Enfin, pour double[][], on a D pour dire que c'est un double, puis on a [D qui correspond à double[] et [[D qui correspond à double[][]
Ne sois donc pas surpris si tu affiches un tableau d'avoir ce genre de résultat :
System.out.println(args); // [Ljava.lang.String;@13579BDFExplication : les classes tableau sont générées automatiquement, et la méthode toString() n'est pas redéfinie, donc on conserve le comportement par défaut hérité de la classe Object, c'est à dire : le nom de la classe [Ljava.lang.String, suivi d'un @ et d'un code hexadécimal correspondant au hashcode de l'objet tableau.
Pour afficher correctement un tableau, il faut utiliser des méthodes qui lisent un à un tous les éléments du tableau pour les afficher. Par exemple la méthode java.util.Arrays.toString permet de faire ce genre de manipulation.
System.out.println(java.util.Arrays.toString(new int[] {1, 2, 3})); // [1, 2, 3]