Java程序中的Bizzare System.out.println()

Car*_*ndo 3 java linux string debugging char

String messageFile = ... // Assume messageFile SHOULD have the string "MESSAGE"
System.out.println("The messageFile is: " + messageFile + "!!");
Run Code Online (Sandbox Code Playgroud)

通常,人们会期望上面的命令输出:

The messageFile is: MESSAGE!!!!
Run Code Online (Sandbox Code Playgroud)

但是,我收到了这个:

!!e messageFile is: MESSAGE
Run Code Online (Sandbox Code Playgroud)

看看上面的陈述如何,"!!" 点似乎环绕着消息.我的理论是:

String messageFile = ... 
Run Code Online (Sandbox Code Playgroud)

包含的字符多于我假设的"MESSAGE".结果,它将下一个输入(在本例中为"!!")包装到System.out.println()消息的前面.

这个是什么角色造成的?

额外信息:

顺便说一句,messageFile是通过将命令行参数传递给java类myClassA来初始化的.myClassA的构造函数使用super()将messageFile参数传递给myClassB.myClassB将messageFile传递给function().

Kal*_*son 16

我猜你\rmessageFile变量中有一个乱码回车(),没有换行符(\n).

编辑 - 按预期测试:

class Println {
        public static void main(String[] args) {
                System.out.println("xxxx this \rTEST");
        }
}
Run Code Online (Sandbox Code Playgroud)

输出:

TEST this 
Run Code Online (Sandbox Code Playgroud)