IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Tableau vide et tableau null


Sujet :

Collection et Stream Java

  1. #1
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut Tableau vide et tableau null
    Bonjour à vous.
    J'ai un problème de compréhension de certains cas de tableaux.
    int[] tableau1 = null, veut dire que la variable tableau1 prend une place dans la mémoire dont la valeur est une adresse, mais qui ne pointe sur aucune zone mémoire.
    int[] tableau2 = {} et int[] tableau3 = new int[0], Ces deux tableaux (qui sont des adresses) pointent vers une zone mémoire mais qui est vide.
    est ce vrai?
    Merci
    J'apprends la programmation pour le plaisir

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Oui, en gros, c'est ça. Dans les deux cas, on consomme de la mémoire pour la référence de l'objet (null n'est qu'une valeur spéciale qui veut dire que ça pointe sur rien). Si la référence n'est pas null, la zone de mémoire pointée est constitué d'une description (8 octets) et de mémoire pour stocker les données assiciées (la valeur, ou les références de attributs, ou la mémoire pour stocker n références pour un tableau). Un tableau prend 4 octets de plus pour stocker sa taille (même quand sa taille fait 0), et autant fois la taille pour chaque valeur ou reférence.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui, c'est pas mal.

    Mais bon, les adresses mémoires, tout ça, c'est pas intéressant. Tu fais du Java, la mémoire, tu dois juste t'occuper de pas en consommer trop, le reste c'est pas ton problème, c'est le sien.

    Un tableau assigné à null, c'est la même chose que n'importe quel objet null.
    C'est une variable qui ne pointe pas vers un objet, et donc qui ne peut pas être utilisée tant qu'on lui a pas donné un objet.
    Tu ne peux pas demander sa taille, son hashCode, accéder à son premier élément, en faire une copie, rien du tout. Tout ça déclencherait une NullPointerException, parce que tu as essayé d'utiliser un objet, alors que ce n'était que null.

    Un tableau vide, c'est un tableau normal dont la longueur est zéro, et donc qui ne contient pas d'élément. Tu peux demander sa longueur, son hashCode, faire une copie ou ce que tu veux. Tu ne peux pas accéder à un élément parce qu'il n'en a pas, mais l'erreur serait alors ArrayIndexOutOfBoundsException parce que tu as essayé d'accéder à un index du tableau qui va au-delà de sa taille.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Merci à vous. C'est parfaitement clair.
    J'apprends la programmation pour le plaisir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Afficher champs vides dans tableau
    Par rasmulti dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/02/2007, 01h19
  2. test sur tableau vide
    Par vince2005 dans le forum Langage
    Réponses: 1
    Dernier message: 11/10/2006, 16h08
  3. [Tableaux] pb implode avec tableau vide
    Par bogsy15 dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2006, 13h39
  4. supprimer lignes/cellules de tableau vides
    Par Drozo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/08/2006, 13h21
  5. UBound et tableau vide
    Par benoit70 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 23/09/2005, 22h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo