在Java中运行System.out.println("\" \\");
我输出为:
" \
请你详细解释一下,为什么会这样?
答案 0 :(得分:4)
因为您使用反斜杠(""
)以及带反斜杠的反斜杠转义双引号(\
)。
答案 1 :(得分:3)
System.out.println("\" \");
System.out.println(" --> String Open
\" --> Double Quote character escaped using backslash
\\ --> Backslash itself as a character escaped using backslash
"); --> String Close
会为您输出"\
对于转义字符列表,您可以找到here.
\t
此时在文本中插入一个标签。\b
此时在文本中插入退格。\n
此时在文字中插入换行符。\r
此时在文本中插入回车符。\f
此时在文本中插入换页。\'
此时在文本中插入单引号字符。\"
此时在文本中插入双引号字符。\\
此时在文本中插入反斜杠字符。答案 2 :(得分:3)
backslash
是JAVA和许多其他编程语言中的特殊字符,其中一个用途是在某些情况下转义字符。
例如:
如果要打印包含双引号的字符串,例如:How are you "Bob" ?
使用System.out.println("How are you "Bob" ?");
打印此内容无效,因为您正在关闭单词Bob
之前的引号。因此,一个字符用于处理这种情况,因此可以在字符串中打印双引号:
System.out.println("How are you \"Bob\" ?");
此外,由于我们已经同意\
转义双引号,如果要在字符串中打印单个backslash
,执行此System.out.println("\");
将打开字符串但是将转义第二个双引号,这将导致错误,因为字符串未关闭。要解决此问题,您需要像这样转义backslash
:System.out.println(“\”);
\
的其他有趣用法:
\n
字符返回新行
\t
字符用于插入标签
有关转义字符的更多信息,请参阅Wikipedia
答案 3 :(得分:1)
是。你正在逃避两个角色,
String s = "\" \\";
使用单个反斜杠首先转义双引号然后反斜杠。所以你明白了,
" \
您也可以尝试
System.out.println(s.length());
哪会告诉你“3”。因为你有一个''',''和'\'
字符串Escape Sequences在The Java Tutorial: Characters中解释,它也允许使用Unicode字符
System.out.println("\u03A9");
将输出一个等于
的字符串 Ω
答案 4 :(得分:0)
除了我的前体的评论之外,您还可以在Oracle的Java Tutorial中查看转义序列列表。
http://docs.oracle.com/javase/tutorial/java/data/characters.html
答案 5 :(得分:0)
这是因为当你在java中的特殊字符前放置\
时,\
告诉JVM
它不是特殊字符,而是它是字符串的一部分。
因此,在您的情况下,当您在\
之前放置"
时,它会打印一个双quote(")
,当您再次放置\\
时,它会打印slash (\)
。
如果您想了解更多相关信息,可以浏览Java内部以及如何在java中处理特殊字符。
希望它有所帮助。
答案 6 :(得分:0)
这些被称为转义序列。所有转义序列都以\(反斜杠)字符开头(例如,\ n,\ t等)。这里\ n,\ t对Java有特殊含义,比如换行符和制表符空格。同样" (双引号)有一个特殊的含义,即在Java中终止字符串文字。而不是制造"作为字符串文字终止符,我们需要告诉java编译器将其视为特殊序列。因此我们使用这些转义序列,如\\(对于反斜杠),\' (单引号),\ r \ n(回车)等,
谢谢, JK
答案 7 :(得分:0)
根据oracle的标准定义如下:
以反斜杠 \
开头的字符是转义序列,对编译器具有特殊意义。下表显示了 Java 转义序列
转义序列描述
\"
此时在文本中插入一个双引号字符。\\
此时在文本中插入一个反斜杠字符。按照上面对 System.out.println("\" \\")
的描述,
\"
将被替换为双 " 引号字符和
\\
将替换为(单反斜杠)\
字符。
因此打印的输出将是 " \
希望这会有所帮助。