我不明白"'"
和"\'"
之间的区别。
也就是说,
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上有相同的结果吗?
答案 0 :(得分:13)
对于字符串文字,'
和\'
之间没有区别。但是对于字符文字,在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能够使用Java。
答案 1 :(得分:1)
我只想补充一下rgettman的答案。
就像他说的那样,在这种背景下'
和\'
之间没有区别。在使用反斜杠的情况下,'
正在被转义,但它没有实际区别,因为在这种情况下不需要转义(编译器可以在没有帮助的情况下将内容与机箱区分开来)。
如果您尝试使用'
作为字符,那么这很重要。例如:
char c = '''; //compile error
char c = '\''; //escaped correctly
同样适用于在String声明中转义双引号。例如:
String s = """; //compile error
String s = "\""; //escaped correctly
本质上,转义字符会告诉编译器将字符视为内容,否则它会完成封装,并且编译器认为在行的末尾有一个错误的字符。
现在把所有东西绑在一起,这很好用:
String s = "'";
char c = '"';
这是因为编译器可以区分'
和"
以完成机箱。希望这能为其他人解决一些逃避问题。