String messageFile = ... // Assume messageFile SHOULD have the string "MESSAGE"
System.out.println("The messageFile is: " + messageFile + "!!");
Normalement, on attend la commande ci-dessus à la sortie:Bizzare System.out.println() en Java Programme
The messageFile is: MESSAGE!!!!
Cependant, je reçois ceci:
!!e messageFile is: MESSAGE
Voyez comment la déclaration ci-dessus, le "!!" les points semblent entourer le message. Ma théorie est que:
String messageFile = ...
contient plus de caractères que mon supposé "MESSAGE". Par conséquent, il encapsule l'entrée suivante (dans ce cas, le "!!") à l'avant du message System.out.println().
Quel caractère est à l'origine de cette situation?
Extra info:
BTW, messageFile est en cours d'initialisation en passant un argument de ligne de commande à une classe java, myClassA. Le constructeur de myClassA utilise un super() pour passer le paramètre messageFile à myClassB. myClassB passe messageFile dans une fonction().
Est-il possible plus d'un fil est écrire à System.out en même temps? J'ai le sentiment que les PrintStreams utilisés dans System.out ne sont pas thread-safe. –
@matt Les appels individuels à imprimer ou à imprimer se produisent en une seule opération thread-safe, mais si System.out et System.err pointent tous deux vers le même endroit (la console par exemple), ils seront en concurrence et vous pourriez avoir l'air maladroit sortie. –