在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
中。
答案 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()