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

Langage Java Discussion :

Utilisation des chaine de caractéres String


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2006
    Messages : 194
    Points : 69
    Points
    69
    Par défaut Utilisation des chaine de caractéres String
    Bonjour tous le monde,
    En générale dans la langage java lorsque on veut initialiser une chaine de caractére on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String myString = new String();
    Mais certain developpeurs expérimentés disent qu'il faut eviter de faire ce genre de choses et le remplasser par :
    A votre avis pourquoi on devrai procéder ainsi et c'est quoi la difference entre ces deux codes.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    On va dire que çà peut éventuellement t'économiser l'espace mémoire d'une chaine à l'initialisation ( enfin bon cet espace est perdu dès que tu fais des manips sur ta chaine... ).

    En effet java pour des chaines déclarées de la deuxième façon, java va commencer par chercher s'il n'existe pas la même chaine déclarée de la même manière (c'est à dire qu'une autre initialisation équivallente a été réalisée) et fait pointer ta chaine sur cette zone mémoire.

    Alrs qu'un new va directement réserver une zone de mémoire pour ta nouvelle chaine.

    Enfin bonje dirais avant tout ne pas initialiser les chaines avant de les utiliser surtout...

  3. #3
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Les constructeurs de String ne servent absolument à rien
    Il est préférable d'utiliser les "" (plus simple, plus rapide, plus lisible, plus efficace).

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    La classe String gère un pool de chaines de caractères, afin de minimiser l'espace mémoire occupé par les chaines de caractères redondantes.
    A la compilation, les chaines constantes sont ajoutées dans ce pool.
    On peut aussi ajouter des chaines dans ce pool (cf methode String.intern()).
    Ce pool contient donc des references uniques vers des chaines, qu'il est possible de recuperer.
    C'est ce qui ce passe quand tu manipules directement des constantes dans ton code.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       System.out.println("toto"=="toto"); 
       System.out.println("toto"=="to"+"to");
       System.out.println(new String("toto")==new String("toto"));
       System.out.println("toto"==new String("toto").intern());
    donne :
    true
    true
    false
    true

    Ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        String myString = new String();
    c'est définir une chaine de caracteres vide. C'est à dire que c'est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        String myString = "";
    Sauf que dans le premier cas, tu construis un object String(), alors que dans le deuxième tu vas le rechercher dans le pool (et donc ne pas creer une nouvelle instance de String.

    Tu économises en fait le temps de construction d'un object, un peu de mémoire, et problablement le travail du garbagge collector.
    A grande echelle (pour le remplissage d'un tableau par exemple), ca peut être sensible.

    De meme, ce genre de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      String string = new String("toto");
    n'a absolument aucun interet. Il faut ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      String string = "toto";
    Dans le meme genre, on a aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Boolean mybool = new Boolean(true);
    a remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Boolean mybool = Boolean.TRUE;

Discussions similaires

  1. Réponses: 12
    Dernier message: 09/09/2006, 11h54
  2. [VB.NET]comment on filtre des chaines de caractères ?
    Par zouhib dans le forum Windows Forms
    Réponses: 61
    Dernier message: 14/06/2006, 14h33
  3. [C++.net]Concatener des chaines de caractère
    Par Dlyan dans le forum MFC
    Réponses: 3
    Dernier message: 27/03/2006, 15h25
  4. Repérer des chaines de caractères formatée dans du texte
    Par jeremiegrenoble dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/02/2006, 13h06
  5. Chaine de caractères String
    Par unknown4 dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2005, 08h28

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