我不明白"'"和"\'"之间的区别。那是,
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上也有同样的结果吗?
发布于 2013-07-04 01:15:54
对于字符串文字,'和\'之间没有区别。但是对于字符字面量来说,转义是必需的,因为在Java语言中,字符字面量包含在'字符中。
''' // 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也是如此。
发布于 2013-07-04 03:28:37
我只是想对rgettman的回答补充一点。
正如他所说,在这种情况下,'和\'之间没有区别。在使用反斜杠的情况下,'将被转义,尽管这没有实际区别,因为在这种情况下转义是不必要的(编译器可以在没有帮助的情况下将内容从附件中区分出来)。
如果您试图将'用作字符,那么这将很重要。例如:
char c = '''; //compile error
char c = '\''; //escaped correctly这同样适用于转义字符串声明中的双引号。例如:
String s = """; //compile error
String s = "\""; //escaped correctly从本质上讲,对字符进行转义会告诉编译器将该字符视为内容,否则它将结束封闭,并且编译器会认为在行尾有一个错误的字符。
现在,将所有内容结合在一起,可以很好地工作:
String s = "'";
char c = '"';这是因为编译器可以毫不费力地区分'和"来完成封装。希望这能为其他人澄清一些逃脱的问题。
https://stackoverflow.com/questions/17454266
复制相似问题