char字面’\”与””相同吗?(反斜杠 – 双引号vs only-doublequote)

char文字'\"''"'之间有什么区别吗?

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

 System.out.println('\"' == '"'); // prints "true" 

严格来说,没有必要在char字面值中转义双引号,但它并没有改变这个\"表示双引号字符\u0022

参考

  • JLS 3.10.6字符和字符串文字的转义序列

String模拟

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

 System.out.println("\'".equals("'")); // prints "true" 

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

 System.out.println("\'" == "'"); // prints "true" 

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

参考

  • JLS 3.10.5字符串文字

    字符串文字 – 或者更常见的是,作为常量表达式值的字符串 – 被“实现”,以便使用String.intern方法共享唯一实例。

相关问题

  • 如何比较Java中的字符串?
  • Java String.equals==
  • Java和.NET字符串文字在哪里?
  • “” == sfalse“”.equals( s )true

概要

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