Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

Java Quiz #5

Un petit quiz simple pour Pâques !
Que se passe-t-il lorsque le code suivant est excuté ?

  1. StringBuffer java = new StringBuffer('J').append('a').append('v').append('a');
  2. System.out.println(java);

Réponse :
La console affiche :

ava

Mais où est donc passé le J ?
La javadoc de StringBuffer indique que celle classe possède deux constructeurs :

  • un qui prend une String en paramètre, qui définit la valeur initiale du buffer ;
  • un qui prend un int en paramètre, qui définit la taille initiale du buffer.

Lorsque nous construisons notre StringBuffer à l'aide d'un char, c'est le second constructeur qui est appelé, car un char est incompatible avec une String mais peut, en revanche, parfaitement être considéré comme un type numérique (16bits, non signé).

Ici, "J" est donc interprété comme la valeur numérique 74. Un buffer vide est initialité à cette taille, et les caractères "a", "v" et "a" y sont ensuite ajoutés, ce qui explique le résultat affiché par la console.


Commentaires

1. Le mercredi 26 mars 2008, 10:20 par Mialy

Mince ! J'ai directement lu la réponse ^^;

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.