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

avec Java Discussion :

Petites questions sur l'instanciation


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut Petites questions sur l'instanciation
    Bonjour, bonjour,

    Bon ça fait peu que je me suis vraiment mis à Java mais j'aimerais tellement qu'on éclaire ma lanterne sur certains points basiques qui me semblent toujours un peu flous

    Tout d'abord, je vois toujours des instanciations du type : Objet obj = new Objet();
    Mais j'ai vu récemment que l'on pouvait tout simplement faire ceci : new Objet();
    Ma question est : est-ce que c'est mauvais d'instancier comme ça ? Quel impact ça pourrait avoir sur mon programme autrement de ne pas pouvoir retravailler sur cet objet ?

    Ensuite, instancier un String ou ne pas instancier un String ? Quelle différence il y a entre String chaine; et String chaine = new String(); ?

    Merci d'avance !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Kodkey Voir le message
    Quel impact ça pourrait avoir sur mon programme autrement de ne pas pouvoir retravailler sur cet objet ?
    Aucun. Assez souvent, quand on crée des objets c'est pour pouvoir s'en resservir derrière, c'est pour ça qu'on les met dans une variable.
    Ça permet aussi de donner un nom à l'objet, des fois que maMethodeTresInteressante(new AEDefx(3), new AEDefx(7), new GHFty("b7v23")) paraisse moins évident que maMethodeTresInteressante(echeanceClient, echeanceFourn, formNotarial)...

    Citation Envoyé par Kodkey Voir le message
    Ensuite, instancier un String ou ne pas instancier un String ? Quelle différence il y a entre String chaine; et String chaine = new String(); ?
    Euh... String ou pas String c'est pareil. Instancier ou ne pas instancier, ben ça dépend si tu as besoin d'une instance. La question ne se pose pas, on instancie quand on a besoin d'une instance et on ne le fait pas sinon. Ça va de soi en fait.

    Dans ce que tu nous montres, la différence n'est pas "instancier ou ne pas instancier." C'est "assigner ou ne pas assigner"
    - Le deuxième tu lui as donné une valeur. (Cette valeur est la chaîne vide, ça fait pareil que String chaine = "";)
    - Le premier, non. Si c'est une variable locale, ça veut dire que tu ne peux pas t'en servir tant que tu ne lui as pas donné une valeur. Si c'est une variable membre, elle est initialisée à null par défaut.
    En terme plus simple : si ça peut être normal de ne pas donner de valeur à la variable, elle prend une valeur par défaut. Si c'est complètement stupide, elle n'aura pas de valeur tant qu'on ne lui en donne pas. Et si on lui en donne pas on peut pas s'en servir.


    Pour information, appeler new String() ou new String("machinchose"), n'est jamais utile dans du code normal. Ça peut servir parfois dans du code qui teste un autre code.
    J'ai dit, jamais utile. Donc, quand faut-il le faire : jamais. Il n'y a pas de raison. C'est pas quand on programme que ça sert, c'est quand on programme pour tester un programme.

    Comme à chaque fois qu'on utilise le mot-clé new, cela sert à créer un nouvel objet qui n'existait pas avant. Donc new String() ou new String("bidule") garantissent qu'une nouvelle String est créée, ce n'est pas un objet qui existait déjà avant. En principe ça ne sert à rien. On se fiche que la String soit un nouvel objet ou un objet qui existait déjà, ce qui nous intéresse c'est ce que dit la String.
    Mais parfois on peut vouloir tester qu'un programme se comporte comme il faut, sans faire de différence entre une nouvelle String ou une String qui existait déjà. Autrement dit tester que le programme utilise equals() et pas ==
    À part ça, aucun intérêt.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Pour information, appeler new String() ou new String("machinchose"), n'est jamais utile dans du code normal. Ça peut servir parfois dans du code qui teste un autre code.
    J'ai dit, jamais utile. Donc, quand faut-il le faire : jamais. Il n'y a pas de raison.
    +1

    Et j'ajouterai qu'en plus d'être inutile, cela crée des objets pour rien.

    Dans le cas de
    un objet est créé implicitement (une String qui "contient" le mot machin) puis référencé par s.

    Mais si on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String s = new String("machin");
    Deux objets sont créés.
    Une String qui "contient" le mot machin comme plus haut, puis une nouvelle String qui va reprendre le contenu de la première. s référencera ce 2ème objet.
    Une String a donc été créée pour rien.

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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