在 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
中。
最佳答案
内存中的字符可以用不同的方式表示。
您的集成开发环境 (IDE) 有一个调试器,它选择使用包含字符的单个元素来表示 String[][][]
wehnquflkwe","wefwefw","wefwefw","wefwef
作为java引用的字符串
"wehnquflkwe\",\"wefwefw\",\"wefwefw\",\"wefwef"
这很有意义,因为您可以将此字符串复制并粘贴到 Java 代码中,而不会造成任何损失。
另一方面,您的系统控制台和 IDE 的内置终端仿真器将以正常表示形式输出字符,即没有任何 java string-escape-characters:
wehnquflkwe","wefwefw","wefwefw","wefwef
作为实验,您可能想要检查其他“特殊”字符会发生什么,例如 \t
(制表符)或 \b
(退格键) 。这只是 iceberg 的一小部分- Java中的字符通常翻译为 unicode点,您的系统或终端中可用的字体可能支持也可能不支持。 IDE 将字符表示为 java 引用的字符串的方式使其能够无损地表示几乎任何内容; System.out.println 的输出更加可变。
关于java - 转义字符 '\' 不显示在 System.out.println() 中,但显示在返回值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798387/