pol*_*nts 9

绝对没有区别.这两个char==.

System.out.println('\"' == '"'); // prints "true"
Run Code Online (Sandbox Code Playgroud)

严格地说,没有必要在char文字中转义双引号,但它不会改变\"表示双引号字符的事实\u0022.

参考


String 类似物

我们也有String文字的类似情况:

System.out.println("\'".equals("'")); // prints "true"
Run Code Online (Sandbox Code Playgroud)

事实上,我们甚至可以更进一步,==用于参考平等:

System.out.println("\'" == "'"); // prints "true"
Run Code Online (Sandbox Code Playgroud)

第二个片段证明两个字符串文字实际上是相等的,因此在编译时受到字符串实习的影响.

参考

  • JLS 3.10.5字符串文字

    字符串文字 - 或者更一般地说,是作为常量表达式值的字符串 - 被"实例化"以便使用该方法共享唯一实例String.intern.

相关问题


摘要

  • 必须转义 char文字中的单引号
    • 因为char字面引用单引号
  • String文字中的双引号必须被转义
    • 因为String字面引用双引号
  • 即使没有必要,逃跑也没有伤害
    • 选择最具可读性的东西