转义字符'\'不会显示在System.out.println()中,而是显示在返回值中

时间:2017-06-28 09:17:30

标签: java

在Java中,当我使用转义字符替换String中的字符时,字符会显示在返回值中,尽管根据System.out.println它们不在那里。

String[][][] proCategorization(String[] pros, String[][] preferences) {
String str = "wehnquflkwe,wefwefw,wefwefw,wefwef"; 
String strReplaced = str.replace(",","\",\""); //replace , with ","
System.out.println(strReplaced);

控制台输出为:wehnquflkwe","wefwefw","wefwefw","wefwef

String[][][] array3d = new String[1][1][1]; // initialize 3d array
array3d[0][0][0] = strReplaced;
System.out.println(array3d[0][0][0]);


    return array3d;
}

控制台输出是:

  

wehnquflkwe “ ”wefwefw“, ”wefwefw“,” wefwef

现在返回值为:

  

[[[ “wehnquflkwe \”,\ “wefwefw \”,\ “wefwefw \”,\ “wefwef”]]]

我不明白为什么\会显示在返回值中而不会显示在System.out.println中。

2 个答案:

答案 0 :(得分:1)

记忆中的字符可以用不同的方式表示。

您的集成开发环境(IDE)有一个调试器,它选择使用包含字符的单个元素来表示String[][][]

wehnquflkwe","wefwefw","wefwefw","wefwef

作为java引用的字符串

"wehnquflkwe\",\"wefwefw\",\"wefwefw\",\"wefwef" 

这很有意义,因为您可以将此字符串复制并粘贴到Java代码中而不会有任何损失。

另一方面,系统的控制台和IDE的内置终端仿真器将以正常表示形式输出字符,即没有任何java字符串转义字符:

wehnquflkwe","wefwefw","wefwefw","wefwef

作为一项实验,您可能想要检查其他"特殊"字符,例如\t(制表符中断)或\b(退格)。这只是iceberg的提示 - Java中的字符通常会转换为unicode点,系统或终端中可用的字体可能支持也可能不支持。 IDE将字符表示为java引用的字符串的方式允许它无损地表示几乎任何东西; System.out.println的输出变化很大。

答案 1 :(得分:0)

System.out.println完全按照存储在内存中的String打印。

另一方面,当您使用breakpoint停止应用程序流程时,您可以查找值。

大多数IDE使用\显示转义字符,表示它只是一个String,而不是String[],或者不分割{{1}如果它在中间包含String,则分为两行。

为了以防万一,你仍然有疑问,我建议打印\n。这应该允许您逐个计算字符。

可能的实验:

strReplaced.length()