Références, égalité, identité

Une variable d'objet est une référence : null, alias, identité (==) contre égalité (equals), equals redéfinie, copie superficielle ou profonde, en Java.

  • 27 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Comprendre

Quelques cartes du deck

  • Référence : de quoi s'agit-il ?

    Voir la réponse

    Valeur stockée dans une variable d'objet, qui indique où se trouve l'objet en mémoire.

    Point b = a; recopie la référence, pas l'objet : a et b désignent ensuite le même point.

  • Que valent a.x et c.x à la fin de ce programme ?

    ```java
    Point a = new Point(1, 2);
    Point b = a;
    Point c = new Point(1, 2);
    b.x = 5;
    `

    • 5 et 1
    • 1 et 1
    • 5 et 5
    • 1 et 5
    Voir la réponse

    5 et 1

    b est un alias de a : le même objet, donc a.x passe à 5. c est un second objet créé avec les mêmes valeurs : il ne bouge pas.

  • Une variable de type objet ne contient pas l'objet lui-même mais une … vers lui.

    Voir la réponse

    Une variable de type objet ne contient pas l'objet lui-même mais une référence vers lui.

    Les types de base (int, boolean…) stockent leur valeur directement ; tous les autres passent par une référence.

  • null : de quoi s'agit-il ?

    Voir la réponse

    Valeur de référence qui ne désigne aucun objet.

    Lire un attribut ou appeler une méthode à travers null lève NullPointerException.

  • Pourquoi a.equals(c) est-elle fausse quand Point n'a pas redéfini equals, même si a et c ont les mêmes coordonnées ?

    • equals ne s'applique qu'aux chaînes de caractères
    • L'equals d'Object compare les références, comme ==
    • Les coordonnées sont des int, que equals ne sait pas lire
    • Deux objets créés séparément ne sont jamais égaux en Java
    Voir la réponse

    L'equals d'Object compare les références, comme ==

    La classe doit dire ce qu'est l'égalité de deux points. Une fois equals(Object o) redéfinie pour comparer x et y, a.equals(c) devient vraie, alors que a == c reste faux.