Java 为什么我不';不需要在字符串声明中转义ASCII字符,如\037?
我知道“”是Java中的转义字符。所以我的理解是,每当我声明一个包含特殊字符的字符串时,我都需要用“”对其进行转义。例如:Java 为什么我不';不需要在字符串声明中转义ASCII字符,如\037?,java,Java,我知道“”是Java中的转义字符。所以我的理解是,每当我声明一个包含特殊字符的字符串时,我都需要用“”对其进行转义。例如: String backSlash = "\\"; 我必须为ascii字符\037创建一个字符串,显然我不需要用“”对其进行转义 为什么会这样?你在写一篇: 八进制数字由一个ASCII数字0和一个或多个ASCII数字0到7组成,中间穿插下划线,可以表示正整数、零整数或负整数 如果写为“037”,它稍后将被解释为“0”“3”“7”。您正在写一个: 八进制数
String backSlash = "\\";
我必须为ascii字符\037创建一个字符串,显然我不需要用“”对其进行转义
为什么会这样?你在写一篇:
八进制数字由一个ASCII数字0和一个或多个ASCII数字0到7组成,中间穿插下划线,可以表示正整数、零整数或负整数
如果写为“037”,它稍后将被解释为“0”“3”“7”。您正在写一个:
八进制数字由一个ASCII数字0和一个或多个ASCII数字0到7组成,中间穿插下划线,可以表示正整数、零整数或负整数
如果写为“037”,它稍后将被解释为“0”“3”“7”
我的理解是,每当我声明一个包含特殊字符的字符串时,我都需要通过“\”
您的理解是不完整的:Java字符串文本中的反斜杠\
可以引入以下转义序列:
- 特殊字符转义-这包括
,\b
,\t
,\n
,\f
,\r
,\'
和\“
\
- Unicode转义-以
开头的序列,最多有四个十六进制数字\u
- 八进制转义-以
开头的序列,八进制数介于0和3778之间,以0开头\
“\”
您的理解是不完整的:Java字符串文本中的反斜杠\
可以引入以下转义序列:
- 特殊字符转义-这包括
,\b
,\t
,\n
,\f
,\r
,\'
和\“
\
- Unicode转义-以
开头的序列,最多有四个十六进制数字\u
- 八进制转义-以
开头的序列,八进制数介于0和3778之间,以0开头\
您的示例具有第三种序列(八进制)。转义反斜杠的目的是说“我不想要反斜杠的特殊含义;我想要一个实际的反斜杠”。如果要表示字符
\037
,则需要反斜杠的特殊含义,因此转义它完全不是您想要的。因此ASCII码\037不是文字\037?它在那里转义0?它在那里转义037成为八进制,而不是“0”“3”“7”。因此\赋予整个字符串八进制的含义。谢谢EJP,我不小心删除了我的upvote,很抱歉…@SkipableMe不,它会导致下一个字符被解释为文字零,从词汇上讲,它是八进制文字的开始。当八进制文字被使用时,字符串的其余部分将继续被处理。转义反斜杠的目的是说“我不想要反斜杠的特殊含义;我想要一个实际的反斜杠”。如果要表示字符\037
,则需要反斜杠的特殊含义,因此转义它完全不是您想要的。因此ASCII码\037不是文字\037?它在那里转义0?它在那里转义037成为八进制,而不是“0”“3”“7”。因此\赋予整个字符串八进制的含义。谢谢EJP,我不小心删除了我的upvote,很抱歉…@SkipableMe不,它会导致下一个字符被解释为文字零,从词汇上讲,它是八进制文字的开始。当八进制文字被使用时,字符串的其余部分将继续被处理。如果省略反斜杠,它将被解释为三个字符“0”“3”“7”。@EJP True,我对隐藏代码有一个不同的想法:)更正。@请不要在这里发布clickbait,但是你有没有考虑过这是一个答案相同的问题?如果你省略了反斜杠,它将被解释为三个字符“0”“3”“7”。@EJP True,我对隐藏代码有一个不同的想法:)更正。@SkibleMe不要在这里发布clickbait,但是你有没有考虑过这是同一个问题,同一个答案的可能性?
String delimiter = "\037"; // enough
String delimiter = "\\037"; // not needed and wrong