Quand j'utilise le caractère null Par exemple: p> '\ u0000' code>, StringBuilder arrêtera d'ajouter de nouveaux éléments.
.
3 Réponses :
Le caractère NULL est un caractère réservé qui indique l'extrémité de la chaîne, donc si vous imprimez quelque chose suivi de pourquoi StringBuilder arrête d'ajouter des éléments après avoir utilisé le caractère null? em> Ce n'est pas vraiment Java, c'est votre terminal qui traite Comme le dit quelqu'un, avec Windows, la sortie peut être \ u0000 code>, rien d'autre après qu'il soit imprimé. P>
\ u0000 code> comme extraire de la chaîne. < / p>
.a. code> (Je n'ai pas testé), c'est parce que Windows Terminal fonctionne différemment du terminal de systèmes basé sur UNIX. Je suis sûr que si vous exécutez ce code sur une machine OSX, vous obtiendrez la même sortie que celle que vous obtenez sur Linux P>
Il imprime un . Code>, une case (pour le caractère null), un
A code> et un
. Code> sur la machine Windows.
@Bheeshgurung Je pense que c'est parce que les systèmes UNIX fonctionnent différemment de Windows, théoriquement si vous essayez la même chose sur OSX, il devrait imprimer . Code>
Le caractère NULL n'est pas utilisé pour terminer les chaînes en Java.
NULL est un personnage réservé où? Ni gnome-terminal, Xterm, ni rxvt n'ont le comportement décrit dans la question. Ils ignorent tous le personnage null.
@Rotsor \ u0000 code> est utilisé comme moyen standard pour mettre fin à une chaîne dans des langages similaires et les terminaux utilisés pour l'utiliser comme "fin de la chaîne". Vous devriez noter que cette question a presque 4 ans. Linux évolue continuellement, les choses peuvent donc avoir changé au cours de ces quatre années. Au moment où la question a été postée, la question était réelle, mais elle a peut-être été résolue entre-temps. Et peut-être aussi que certains terminaux ont toujours ce problème sur Linux. Le fait que votre version de terminal ne puisse pas reproduire le problème ne signifie pas que cette question et ses réponses sont erronées (à moins que vous n'ayez essayé chaque B> Terminal / Version).
C'est pourquoi je demande et ne disant pas que quelque chose ne va pas. Si vous connaissez un terminal qui le fait, je suis curieux. En tout état de cause, disant qu'il s'agit d'un caractère "réservé" sans préciser quel logiciel le rend réservé n'est pas une très bonne réponse.
Votre Je suppose que votre console empêche l'impression après la terminaison stringbuilder code> Ajoutez toujours les éléments, voir:
\ u0000 code> personnage. Une console différente pourrait gérer cela différemment. P> p>
J'ai essayé votre test, et cela n'a pas échoué dans Eclipse sur mon système Windows 7. Cependant, l'exécution de ce programme d'essai distinguera entre les non-adhérents et les non-impressions. Je suggère de l'exécuter dans l'environnement défaillant. Si le problème est non ajouté, la longueur sera inférieure à 2, et la tentative d'imprimer le caractère à l'index 1 échouera. Si le problème est non-impression, la longueur sera 2 et le caractère à l'index 1 sera "A". P> Je pense que la non-impression est beaucoup plus probable que non-Ajout. P > p>
'\ 0' - Terminator NULL, utilisé comme extrémité de la chaîne en cordes C et C ++
Je doute que
stringbuilder code> a cessé d'ajouter de nouveaux éléments. Il s'agit probablement d'un problème dans l'affichage de la chaîne
résultante code>. Quelle est la longueur
() code> du
stringbuilder code> après avoir ajouté quelques éléments?
J'ai couru votre code exact à Eclipse sur JDK 1.6.0_25 sur Win 7 et IT imprime
. une. code> ... pourrait être une chose spécifique à la coque.
Je pense que cela est spécifique au système d'exploitation car les chaînes Java peuvent contenir des caractères nuls. Win7 ici imprime ici la même chose
Impressions
.a. code> ici Ideone.com/bjrkt0