java - 转义字符 '\' 不显示在 System.out.println() 中,但显示在返回值中

标签 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 中。

最佳答案

内存中的字符可以用不同的方式表示。

您的集成开发环境 (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/

相关文章:

java - 我需要将字符串格式的日期转换为实际日期以检查它是否是星期五

用于存储体素/ block 类型的 Java 与 XML Lua

java - 即使元素存在于网页上,获取元素也未附加异常

java - Spring JDBC 从 HSQLDB 查询 BETWEEN DATE

java - 如何计算包含特定值的行数

java - 谁处理由 java 中的组件创建的事件

java - 如何按定义的顺序编写 Java 属性?

java - 解密 JSON 响应 googles topic api

java - Jersey 无法从请求对象中的 String 中反序列化 java.util.UUID

java - 模拟多个用户输入junit