24
mar.
2008
mar.
2008
Java Quiz #5
Java / JEE ›
Java Quiz
|
Tags :
java
Par Olivier Croisier
Un petit quiz simple pour Pâques !
Que se passe-t-il lorsque le code suivant est excuté ?
StringBuffer java = new StringBuffer('J').append('a').append('v').append('a'); 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
Mince ! J'ai directement lu la réponse ^^;