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 :

question sur la classe String


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut question sur la classe String
    Bonjour à tout, j'aurai une petite question pour vous

    Cette question concerne la classe String de java.lang.

    En java, on peut créer des Strings de 2 manières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String str = new String("ma chaine");
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String str = "ma chaine";
    C'est ici le deuxième cas qui m'interesse : comment s'appelle cette technique de création d'objet de type String sans passer par un "new" ?

    De plus, est il possible de reproduire cette technique pour une classe personnalisée? comme par exemple une classe Phone utilisée comme ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Phone monPhone = "06 06 06 06 06";
    Si vous avez des connaissances à partager là dessus, "you're welcome"

    Je sais que la classe String est spéciale en Java pour de nombreuses raisons notamment car dite "native", et "finale" ce qui m'empêche d'en hériter.

    Je souhaite "reproduire" ce schéma pour pouvoir directement créer des objets comme dans l'exemple précédent, pour simplifier et vérouiller mon type d'objets en gros. Que pour un champ d'objet donné, on ne puisse instancier que un type donné, pour ne pas faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String monPhone = "06 06 06 06 06";
    mais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Phone monPhone = "06 06 06 06 06";

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 688
    Par défaut
    En C++ on peut utiliser la surcharge des opérateurs pour modifier l'opérateur = et gérer un Phone monPhone = "06 06 06 06 06";. Mais en java il n'y a pas de surcharge des opérateurs. String et le seul type a posséder ce comportement.

    Est ce que c'est vraiment gênant de faire un Phone monPhone = new Phone("06 06 06 06 06");

  3. #3
    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 Yoann.chambonnet Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String str = new String("ma chaine");
    Cela crée plutôt deux chaînes qu'une : la chaîne littérale et une copie. (C'est un peu plus compliqué que ça, mais bref, là il y a deux objets String, pas un.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String str = "ma chaine";
    C'est ici le deuxième cas qui m'interesse : comment s'appelle cette technique de création d'objet de type String sans passer par un "new" ?
    Cela s'appelle une chaîne littérale. Notons au passage que l'expression littérale "ma chaîne" crée déjà un objet String, et ce même si on ne l'affecte pas au String str.

    Les chaînes littérales ont un certain nombre d'aspects uniques dans Java. Rien d'autre ne les a.

    À la rigueur, depuis l'inbox/outbox, on peut plus ou moins dire que Integer, Byte, Short, Long, Float, Double et Character ont quelque chose qui ressemble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Integer i = 1;
    Double d = 1d;
    Character ch = 'a';
    J'ai bien dit qui ressemble, ce n'est pas la même chose.

    De plus, est il possible de reproduire cette technique pour une classe personnalisée?
    Comme dit par Uther, non, pas en Java.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    Ok merci beaucoup de vos réponses ça m'éclaire.

    J'avais direct pensé a la surcharge d'opérateurs mais j'ai vite déchanté en me rendant compte qu'elle n'existait pas en Java. Ca remontait a un moment mais depuis cette question me trottait toujours en tête alors j'ai voulu la poser ici pour savoir si c'était possible.

    Merci à vous pour vos lumières donc :-D

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

Discussions similaires

  1. [stl] questions sur la classe string
    Par r0d dans le forum SL & STL
    Réponses: 3
    Dernier message: 23/02/2007, 00h31
  2. [C# 2.0] Question sur la classe SerialPort
    Par cyllix dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/09/2006, 08h51
  3. Question sur JDBC classe mysql
    Par oOoOuuhmAn dans le forum JDBC
    Réponses: 2
    Dernier message: 11/05/2006, 17h44
  4. Question facile sur la classe string
    Par MarOne dans le forum Langage
    Réponses: 9
    Dernier message: 20/04/2006, 14h28
  5. Question sur la classe InputStream
    Par Zec Merquise dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/10/2005, 02h36

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