Is the char literal '\“' the same as '”' ?(backslash-doublequote vs only-doublequote)

前端 未结 1 1007
挽巷
挽巷 2020-12-21 13:19

Is there\'s any difference between char literals \'\\\"\' and \'\"\' ?

相关标签:
1条回答
  • 2020-12-21 13:33

    There is absolutely no difference. The two char are ==.

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

    Strictly speaking it's not necessary to escape a double quote in a char literal, but it doesn't change this fact that \" denotes the double quote character \u0022.

    References

    • JLS 3.10.6 Escape Sequences for Character and String Literals

    String analog

    We also have the analogous situation for String literals:

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

    In fact, we can even go a step further and use == for reference equality:

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

    The second snippet proves that the two string literals are really equal, and therefore subject to string interning at compile-time.

    References

    • JLS 3.10.5 String Literals

      String literals --or, more generally, strings that are the values of constant expressions-- are "interned" so as to share unique instances, using the method String.intern.

    Related questions

    • How do I compare strings in Java?
    • Java String.equals versus ==
    • Where do Java and .NET string literals reside?
    • When “” == s is false but “”.equals( s ) is true

    Summary

    • A single-quote in a char literal MUST be escaped
      • Because char literal is quoted in single-quotes
    • A double-quote in a String literal MUST be escaped
      • Because String literal is quoted in double-quotes
    • It doesn't hurt to escape, even when it's not necessary
      • Go with what's most readable
    0 讨论(0)
提交回复
热议问题