首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >撇号与backslash+apostrophe的区别

撇号与backslash+apostrophe的区别
EN

Stack Overflow用户
提问于 2013-07-04 01:13:57
回答 2查看 471关注 0票数 4

我不明白"'""\'"之间的区别。那是,

代码语言:javascript
复制
public class test {
    public static void main(String[] args) {

        System.out.println("Hello, I'm the best!");
        System.out.println("Hello, I\'m the best!");
      }
}

产生相同的结果:

代码语言:javascript
复制
Hello, I'm the best!
Hello, I'm the best!

这是语言的特征吗?或者可能有更复杂的描述?在Android上也有同样的结果吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-04 01:15:54

对于字符串文字,'\'之间没有区别。但是对于字符字面量来说,转义是必需的,因为在Java语言中,字符字面量包含在'字符中。

代码语言:javascript
复制
'''   // Not a legal character literal for '
'\''  // A properly escaped character literal for '

根据JLS, Section 3.10.6的说法,Java转义是针对字符串和字符文字的,所以您可以在这两种情况下使用它们。引用JLS链接:

字符和字符串转义序列允许在字符文字(§3.10.4)和字符串文字(§3.10.5)中表示一些非图形字符以及单引号、双引号和反斜杠字符。

据我所知,Android使用Java,所以我希望Android也是如此。

票数 13
EN

Stack Overflow用户

发布于 2013-07-04 03:28:37

我只是想对rgettman的回答补充一点。

正如他所说,在这种情况下,'\'之间没有区别。在使用反斜杠的情况下,'将被转义,尽管这没有实际区别,因为在这种情况下转义是不必要的(编译器可以在没有帮助的情况下将内容从附件中区分出来)。

如果您试图将'用作字符,那么这将很重要。例如:

代码语言:javascript
复制
char c = '''; //compile error
char c = '\''; //escaped correctly

这同样适用于转义字符串声明中的双引号。例如:

代码语言:javascript
复制
String s = """; //compile error
String s = "\""; //escaped correctly

从本质上讲,对字符进行转义会告诉编译器将该字符视为内容,否则它将结束封闭,并且编译器会认为在行尾有一个错误的字符。

现在,将所有内容结合在一起,可以很好地工作:

代码语言:javascript
复制
String s = "'";
char c = '"';

这是因为编译器可以毫不费力地区分'"来完成封装。希望这能为其他人澄清一些逃脱的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17454266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档