Public int[] index = new int[20];

Florian -  
 Florian -
Bonjour,

je débute en java et j'ai lu ceci dans un morceau de code:

public int[] index = new int[20];

Concrétément quel type d'objet va être crée ?

Merci

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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 :

    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;@13579BDF
    Explication : 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]
    0
  2. Florian
     
    Ca a le mérite d'être clair, merci beaucoup !
    0