4

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

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!");
      }
}

给出相同的结果:

Hello, I'm the best!
Hello, I'm the best!

这是语言的特点吗?或者可能有更复杂的描述?Android上是否有相同的结果?

4

2 回答 2

13

'对于字符串文字,和之间没有区别\'。但是对于在 Java 中由字符包围的'字符文字,转义是必要的。

'''   // Not a legal character literal for '
'\''  // A properly escaped character literal for '

根据JLS 第 3.10.6 节,Java 转义适用于字符串和字符文字,因此您可以在这两种情况下使用它们。引用 JLS 链接:

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

据我所知,Android 使用 Java,所以我希望 Android 也一样。

于 2013-07-03T17:15:54.437 回答
1

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

'就像他说的那样,在这种情况下和\'在这种情况下没有区别。在使用反斜杠的情况下,将'被转义,尽管它没有实际区别,因为在这种情况下不需要转义(编译器可以在没有帮助的情况下将内容与附件区分开来)。

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

char c = '''; //compile error
char c = '\''; //escaped correctly

这同样适用于在 String 声明中转义双引号。例如:

String s = """; //compile error
String s = "\""; //escaped correctly

本质上,转义字符告诉编译器将该字符视为内容,否则它将完成封装并且编译器认为在您的行尾存在错误字符。

现在把所有东西联系在一起,这很好用:

String s = "'";
char c = '"';

那是因为编译器可以毫不费力地将 与 区分开'"完成外壳。希望这可以为其他人解决一些逃避问题。

于 2013-07-03T19:28:36.517 回答