为什么我不需要在字符串声明中转义像\ 037这样的ASCII字符?

时间:2017-05-21 11:55:27

标签: java

我知道" \"是Java中的转义字符。所以我的理解是每当我声明一个包含特殊字符的字符串时,我需要通过" \"来转义它。例如:

const

我必须为ascii字符\ 037创建一个字符串,显然我似乎不需要用" \"来逃避它。

String backSlash = "\\";

为什么?

2 个答案:

答案 0 :(得分:3)

  

我的理解是每当我声明一个包含特殊字符的字符串时,我需要通过LinkedHashMap<String, Integer> mapWithOrder = strings .stream() .collect( LinkedHashMap::new, // Supplier (map, item) -> map.put(item, item.length()), // Accumulator Map::putAll); // Combiner

来转义它

您的理解是不完整的:Java字符串文字中的反斜杠"\"可以引入one of three types的转义序列:

  • 特殊字符转义 - 包括\\b\t\n\f,{{1} },\r\'
  • Unicode转义 - 以\"开头并且最多包含四个十六进制数字的序列
  • 八进制转义 - 以\\开头且序号为0到377 8 的序列,从0开始

您的示例具有第三种序列(八进制)。

答案 1 :(得分:1)

您正在撰写octal number

  

八进制数字由ASCII数字0后跟一个或多个以下划线散布的ASCII数字0到7组成,并且可以表示正整数,零或负整数。

如果写成“037”,它稍后会被解释为“0”“3”“7”。