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 :

"chaine_caractères".equals() d'où ça vient ?


Sujet :

Langage Java

  1. #1
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut "chaine_caractères".equals() d'où ça vient ?
    Bonjour,

    j'ava encore un nouveau problème de syntaxe :
    je suis tombé par hasard sur ce type de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ("du texte".equals("une chaine")) bla bla...
    dans un 1er temps je me demande: equals ? quel est ce mot clé ?

    Après recherche, je trouve que equals() est une méthode de la classe Object.

    Bon ben seconde question alors: depuis quand une chaine de caractères est une classe ? (Puisqu'on peut lui accrocher une méthode définie dans une classe)

    En clair, je voudrais savoir comment se fait-il qu'une quelconque chaine de caractères au milieu du code, est considérée comme une classe ?
    (Excusez-moi, mais j'ai encore de vieux réflexes de C++, où pareille syntaxe m'aurait value de grosses insultes à la compilation )
    @ bientôt...

    Salut & @+ sur 3W!

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Les string sont des instances de la classe java.lang.String.

    Ecrire "foobar" dans du code est interprété en "new String(new char[]{'f', 'o', 'o', 'b', 'a', 'r'})" par le compilateur.

    Ce n'est ni bizarre ni illogique. Imagine si l'on devait écrire la 2ème forme partout dans notre code, ça deviendrait impossible...

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Les String et les tableaux sont les rares (seuls?) objets java (au sens java.lang.Object) que l'on peut instancier de manière détournée. Donc c'est vrai que cela peut être trompeur.

    Cela est fait pour alléger l'écriture de manière évidente, comme le montre l'exemple de Pill_S.

    D'ailleurs, si tu disposes des sources de Java, tu peux aller jeter un oeil à la classe String, ça peut être instructif

  4. #4
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Merci pour toutes ces infos,

    il est impressionnant de voir avec quelle facilité les chaines de caractères et les tableaux sont maniés en JAVA.

    J'ai souvenir de grosses prise de têtes en C et C++ sur ce sujet.

    A première vue (je débute), je trouve que JAVA est vraiment un langage agréable, fait pour nous débarasser de toutes les corvées de gestion de la mémoire
    @ bientôt...

    Salut & @+ sur 3W!

  5. #5
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    J'ai des notions dans pas mal de langages, mais perso je n'ai jamais retrouvé la beauté et la pureté de java ailleurs. Tu n'as pas fini d'être impressionné. Java a toujours ou presque une solution élégante à un problème donné. Et la sémantique du langage est tellement intuitive que les seuls bugs que l'on a, une fois que l'on maitrise le language, sont généralement des bugs métier (sauf quelques exceptions tordues mais heureusement très rares)

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  6. #6
    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
    Citation Envoyé par Pill_S Voir le message
    Ecrire "foobar" dans du code est interprété en "new String(new char[]{'f', 'o', 'o', 'b', 'a', 'r'})" par le compilateur.
    Bien que ce soit clair, je me demande s'il ne vaudrait pas mieux préciser que c'est presque ça.

    En effet, la notation "foobar" est ce qu'on appelle une chaîne littérale, et les chaînes littérales ont des propriétés que
    new String(new char[]{'f', 'o', 'o', 'b', 'a', 'r'})
    n'a pas.

    Par exemple, ce sont des chaînes dites "internées", comme si on avait appelé intern(). Ce n'est pas le cas avec new String(char[]) ni avec aucun constructeur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

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